【问题标题】:Can I use the free Microsoft C++ Compiler for Python 2.7 to build conda packages?我可以使用免费的 Microsoft C++ Compiler for Python 2.7 来构建 conda 包吗?
【发布时间】:2015-01-24 22:00:01
【问题描述】:

是否可以使用free Microsoft C++ Compiler for Python 2.7 构建二进制 conda python 包?

我在我的 Windows 7 机器上安装了编译器,但是当我尝试 conda build(例如 conda build pyproj from https://github.com/ioos/conda-recipes/tree/master/pyproj)时,我得到:

C:\Anaconda64\conda-bld\work\pyproj-1.9.3>set USERPROFILE=C:\Users\rsignell

C:\Anaconda64\conda-bld\work\pyproj-1.9.3>REM ===== end generated header =====
C:\Anaconda64\conda-bld\work\pyproj-1.9.3>"C:\Anaconda64\envs\_build\python.exe"
 setup.py install
Traceback (most recent call last):
  File "setup.py", line 14, in <module>
    objects = cc.compile(['nad2bin.c', 'src/pj_malloc.c'])
  File "C:\Anaconda64\envs\_build\lib\distutils\msvc9compiler.py", line 473, in
compile
    self.initialize()
  File "C:\Anaconda64\envs\_build\lib\distutils\msvc9compiler.py", line 383, in
initialize
    vc_env = query_vcvarsall(VERSION, plat_spec)
  File "C:\Anaconda64\envs\_build\lib\distutils\msvc9compiler.py", line 271, in
query_vcvarsall
    raise DistutilsPlatformError("Unable to find vcvarsall.bat")
distutils.errors.DistutilsPlatformError: Unable to find vcvarsall.bat

C:\Anaconda64\conda-bld\work\pyproj-1.9.3>if errorlevel 1 exit 1
Command failed: C:\Windows\system32\cmd.exe /c bld.bat

我的 conda 信息是:

c:\Users\rsignell\Documents\GitHub\conda-recipes>conda info
Current conda install:

             platform : win-64
        conda version : 3.8.1
  conda-build version : 1.10.0
       python version : 2.7.8.final.0
     requests version : 2.5.1
     root environment : C:\Anaconda64  (writable)
  default environment : C:\Anaconda64
     envs directories : C:\Anaconda64\envs
        package cache : C:\Anaconda64\pkgs
         channel URLs : http://repo.continuum.io/pkgs/free/win-64/
                        http://repo.continuum.io/pkgs/pro/win-64/
          config file : None
    is foreign system : False

【问题讨论】:

  • 查看msvc9compiler.py,看看它在哪里寻找vcvarsall.bat。您可能需要定义一个环境变量(或运行一些编译器提供的脚本来定义它)。
  • 我猜 conda build 需要更新才能使用。他们可能更改了 vcvarsall.bat 的位置。
  • 好的,我的 anaconda 发行版中有 3 个名为 msvc9compiler.py 的文件,我发现 vcvarsall.bat 文件安装在 C:\Users\rsignell\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\vcvarsall.bat。那我现在该怎么办?

标签: python anaconda conda


【解决方案1】:

我遇到了同样的问题,用这样的补丁解决了:

  1. 设置环境变量(一定要使用自己的名字):

    VS90COMNTOOLS=C:\Users\joost\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0

  2. 修补文件 C:\Users\joost\Anaconda\Lib\distutils\msvc9compiler.py

        if not os.path.isdir(productdir):
            log.debug("%s is not a valid directory" % productdir)
            return None
    

    进入:

    if not os.path.isdir(productdir):
        productdir = toolsdir
        if not os.path.isdir(productdir):
            log.debug("%s is not a valid directory" % productdir)
            return None  
    

完成! 错误是 vcvarsall.bat 文件是在 ..\..\VC 目录中搜索的,而 Microsoft Visual C++ Compiler for Python 27 中不存在该目录。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-30
  • 2011-12-18
  • 2011-06-11
  • 2018-02-18
  • 2021-11-01
  • 1970-01-01
相关资源
最近更新 更多