簡體   English   中英

Pip 默認行為與 virtualenv 沖突?

[英]Pip default behavior conflicts with virtualenv?

我正在關注本教程

當我到達virtualenv flask命令時,我收到了以下錯誤消息:

Can not perform a '--user' install. User site-packages are not visible in this virtualenv.

這是有道理的,因為 virtualenv 的目的是創建一個您可以控制的新環境,而--user命令將所有內容放在特定位置,從而破壞了分離開發環境的目標。

似乎 pip 默認為--user安裝,我可以更改此默認行為嗎? 而且,更好的是,我可以讓 pip 始終與 virtualenv 一起玩嗎?

為了澄清,這是我的終端的樣子。

MELCHIOR:miguelgrinberg-microblog megablanc$ virtualenv flask
New python executable in flask/bin/python
Installing setuptools, pip, wheel...
  Complete output from command /Users/megablanc/Dev...log/flask/bin/python -c "import sys, pip; sys...d\"] + sys.argv[1:]))" setuptools pip wheel:
  Can not perform a '--user' install. User site-packages are not visible in this virtualenv.
----------------------------------------
...Installing setuptools, pip, wheel...done.
Traceback (most recent call last):
  File "/Users/megablanc/Library/Python/2.7/bin/virtualenv", line 11, in <module>
    sys.exit(main())
  File "/Users/megablanc/Library/Python/2.7/lib/python/site-packages/virtualenv.py", line 832, in main
    symlink=options.symlink)
  File "/Users/megablanc/Library/Python/2.7/lib/python/site-packages/virtualenv.py", line 1004, in create_environment
    install_wheel(to_install, py_executable, search_dirs)
  File "/Users/megablanc/Library/Python/2.7/lib/python/site-packages/virtualenv.py", line 969, in install_wheel
    'PIP_NO_INDEX': '1'
  File "/Users/megablanc/Library/Python/2.7/lib/python/site-packages/virtualenv.py", line 910, in call_subprocess
    % (cmd_desc, proc.returncode))
OSError: Command /Users/megablanc/Dev...log/flask/bin/python -c "import sys, pip; sys...d\"] + sys.argv[1:]))" setuptools pip wheel failed with error code 1

您不需要設置--user標志。 創建 virtualenv ( virtualenv flask ) 后,激活它: source flask/bin/activate 你的外殼應該看起來像(flask) ~>

一旦你的 virtualenv 被激活,你應該能夠毫無問題地 pip 安裝包。 例如, pip install numpy 它們將安裝在: lib/python2.6/site-packages/ (適用於您使用的任何 Python 版本)

對我有用的是將$VIRTUAL_ENV_DIRECTORY/pyvenv.cfg更改為include-system-site-packages = true似乎很hacky。

~/.pip. 在那里,我使用命令gedit pip.conf將標志user=true更改為user=false ,之后我能夠成功創建虛擬環境。

就我而言, /etc/pip.conf中有一個文件秘密設置了user=true 因此,每次我激活 virtualenv 時,該配置仍然會影響 virtualenv。

刪除那條線對我有用。

當您的virutalenv myenv被激活(源 myenv/bin/activate)時,刪除--user

有些人建議您編輯/etc/pip.conf ,這 (i) 需要超級用戶權限,並且 (ii) 如果操作不當可能會破壞整個系統。 因此,最好僅將其保留給您的用戶。

使用文本編輯器打開$HOME/.pip/pip.conf 如果它不存在(在我的 Manjaro 機器中就是這種情況),請創建它。 然后添加下面的行,保存並關閉。

[global]
user=false

當您更改程序的設置時,如果可能的話,最好在$HOME下執行此操作,這將 (i) 在更新和重新安裝系統之間保留設置(當然,如果您已將磁盤分隔到//home分區)和(ii) 不會破壞程序的進一步升級,在這種情況下是pip

就我而言,我正在為 python disco mapreduce 庫make test

所以我修改了Makefile測試部分並刪除了--user標志。

就我而言,這是來自 anaconda 的自定義 python 安裝干擾了系統安裝。 檢查which pip ...解決方案是刪除或移動 python 的自定義安裝。

這對我有用,我只將$VIRTUAL_ENV_DIRECTORY/pyvenv.cfg

include-system-site-packages = true

默認設置

include-system-site-packages = false

筆記:

> python --version 
Python 3.8.3 r c 1

盡管這個問題是很久以前提出的,但也許另一個答案對某人還是有用的。

如果僅在嘗試將軟件包安裝到您的主目錄之外的virtualenv 時發生所描述的問題,則問題可能是您登錄的用戶帳戶對您嘗試安裝的文件夾沒有權限。

使用chown更改/提高用戶對目標虛擬環境所在文件夾的權限,例如:

chown username /var/www/your-webproject-folder/ -r

或者

sudo chown username /var/www/your-webproject-folder/ -r

如果你必須用root來做。

檢查是否設置了PIP_USER環境變量。
這為我解決了這個問題。
如果您使用的是GitPod,那么這是一個已知問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM