python - pip install from repo programmatically results in error "No such file or directory"
问题描述
On win 10, I'm installing to py 3.6 venv. From terminal
pip install --upgrade git+git://github.com/larochew/py_daemoniker.git@cfd8a669975c217f6df7063be8cb8fbc08b5f0df#egg=daemoniker
Works fine:
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
But from code:
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'])
Results in:
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'
Although normal packages are installed without errors.
解决方案
As I needed to install requirements silently from code under windows, code below did the trick:
subprocess.check_call(
[executable, '-m', 'pip', 'install', '--upgrade', '-r', config['requirements_file']],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
Without stdout=subprocess.PIPE
stdout from pip will go to current process. Also this will not create terminal in win. Thnx to lead from @sinoroc comment
推荐阅读
- sapui5 - 在自定义智能过滤器字段中保存值
- python - python 按索引求和
- kubernetes - 将多个 k8s 机密组合到一个环境变量中
- swift - 设置 DarkTheme 没有效果 Braintree iOS v4 SDK
- java - 如何控制垃圾收集器?
- php - 如何防止提交的空字段显示在电子邮件表单上?
- docker - 无法查询 docker 版本:获取 https://
/v1.15/version: 远程错误: tls: bad certificate - ios - 哪个版本的 iOS 在调用“restoreCompletedTransactions”时停止要求 Apple ID 验证?
- algorithm - 链表删除操作时间复杂度 O(n) vs O(1)
- delphi - 问题 Flag_secure 在 delphi 10.3 中不起作用