Сообщение об ошибке при попытке установить Cryptodome с помощью setup.py - PullRequest
0 голосов
/ 26 июня 2019

Я устанавливаю криптодома python на 64-битной машине с Windows 7. Я использую модуль setup.py для достижения этой цели. Причина, по которой я использую файл setup.py вместо pip, заключается в том, что на компьютере, на котором я его устанавливаю, отсутствует внешний доступ к Интернету, и поэтому pip не будет работать.

Я установил 64-битные компиляторы c ++ с помощью Windows SDK и выполнил следующие команды в строке cmd в соответствии с инструкциями, изложенными в следующей ссылке .

  • Элемент списка cd "C: \ Program Files \ Microsoft SDKs \ Windows \ v7.1"
  • Элемент списка cmd / V: ON / K Bin \ SetEnv.Cmd / x64 / release
  • Набор элементов списка DISTUTILS_USE_SDK = 1

Когда я запускаю setup.py, я получаю следующее сообщение об ошибке:

  File "setup.py", line 443, in <module>
    set_compiler_options(package_root, ext_modules)
  File "C:\Python33\cryptodome\pycryptodome-3.8.2\compiler_opt.py", line 304, in
 set_compiler_options
    clang = compiler_is_clang()
  File "C:\Python33\cryptodome\pycryptodome-3.8.2\compiler_opt.py", line 239, in
 compiler_is_clang
    return test_compilation(source, msg="clang")
  File "C:\Python33\cryptodome\pycryptodome-3.8.2\compiler_opt.py", line 82, in
test_compilation
    objects = compiler.compile([fname], extra_postargs=extra_cc_options)
  File "C:\Python33\lib\distutils\msvc9compiler.py", line 461, in compile
    self.initialize()
  File "C:\Python33\lib\distutils\msvc9compiler.py", line 372, in initialize
    vc_env = query_vcvarsall(VERSION, plat_spec)
  File "C:\Python33\lib\distutils\msvc9compiler.py", line 288, in query_vcvarsal
    raise ValueError(str(list(result.keys())))
ValueError: ['path']

Вот код, который выглядит как связанный с ошибкой:

    #looks to contain a set of possible environment variable names
    interesting = set(("include", "lib", "libpath", "path"))


    #populates result with keys and values from actual environment variables
    stdout = stdout.decode("mbcs")
            for line in stdout.split("\n"):
                line = Reg.convert_mbcs(line)
                if '=' not in line:
                    continue
                line = line.strip()
                key, value = line.split('=', 1)
                key = key.lower()
                if key in interesting:
                    if value.endswith(os.pathsep):
                        value = value[:-1]
                    result[key] = removeDuplicates(value)


    #tests whether all the keys within result are in interesting
    if len(result) != len(interesting):
         raise ValueError(str(list(result.keys())))

Может ли это быть из-за некоторых пропущенных значений в переменных среды? Если да, то какими должны быть эти вейлы?

1 Ответ

1 голос
/ 28 июня 2019

Хотя сообщение об ошибке не очень полезно, я исправил это, добавив 3 значения: lib, include, libpath (путь уже был добавлен) к переменным окружения на машине.

...