【问题标题】:pip install from repo programmatically results in error "No such file or directory"来自 repo 的 pip install 以编程方式导致错误“没有这样的文件或目录”
【发布时间】:2019-11-22 15:30:12
【问题描述】:

在 win 10 上,我正在安装到 py 3.6 venv。从终端

pip install --upgrade git+git://github.com/larochew/py_daemoniker.git@cfd8a669975c217f6df7063be8cb8fbc08b5f0df#egg=daemoniker

工作正常:

Connected to pydev debugger (build 192.5728.105)
  Running command git clone -q git://github.com/larochew/py_daemoniker.git 'C:\Users\user\AppData\Local\Temp\pip-install-g9do107m\daemoniker'
Collecting daemoniker
  Cloning git://github.com/larochew/py_daemoniker.git (to revision cfd8a669975c217f6df7063be8cb8fbc08b5f0df) to c:\users\user\appdata\local\temp\pip-install-g9do107m\daemoniker
  Running command git checkout -q cfd8a669975c217f6df7063be8cb8fbc08b5f0df
Installing collected packages: daemoniker
    Running setup.py install for daemoniker: started
    Running setup.py install for daemoniker: finished with status 'done'
Successfully installed daemoniker-0.2.3

但从代码:

try:
    from pip import main as pipmain
except:
    from pip._internal import main as pipmain

pipmain.main(['install', '--upgrade', 'git+git://github.com/larochew/py_daemoniker.git@cfd8a669975c217f6df7063be8cb8fbc08b5f0df#egg=daemoniker'])

结果:

Collecting daemoniker
  Cloning git://github.com/larochew/py_daemoniker.git (to revision cfd8a669975c217f6df7063be8cb8fbc08b5f0df) to c:\users\user\appdata\local\temp\pip-install-64iunozy\daemoniker
  Running command git clone -q git://github.com/larochew/py_daemoniker.git 'C:\Users\user\AppData\Local\Temp\pip-install-64iunozy\daemoniker'
  Running command git checkout -q cfd8a669975c217f6df7063be8cb8fbc08b5f0df
ERROR: Could not install packages due to an EnvironmentError: [Errno 2] No such file or directory: 'C:\\Users\\user\\AppData\\Local\\Temp\\pip-req-tracker-qu0hrtol\\9eeeef850bab53900fe60a86b33217ba700f6f3907aadc10a37ed11f'

虽然安装正常的包没有错误。

【问题讨论】:

标签: python python-3.x windows pip


【解决方案1】:

由于我需要从 Windows 下的代码静默安装需求,因此下面的代码可以解决问题:

        subprocess.check_call(
            [executable, '-m', 'pip', 'install', '--upgrade', '-r', config['requirements_file']],
            stdout=subprocess.PIPE,
            stderr=subprocess.PIPE
        )

没有来自 pip 的stdout=subprocess.PIPE 标准输出将进入当前进程。这也不会在win中创建终端。 Thnx 从@sinoroc 评论中领导

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-01
    • 2013-08-30
    • 2016-11-03
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    相关资源
    最近更新 更多