unix 如何检查是否已为VIRTUALENVWRAPPER_PYTHON=/usr/bin/python等安装virtualenvwrapper

fcipmucu  于 2023-01-25  发布在  Unix
关注(0)|答案(3)|浏览(152)

我正在阅读这篇关于virtualenv for Python的指南,但遇到了一个小问题:

Sahands-MBP:empty sahandzarrinkoub$ source /usr/local/bin/virtualenvwrapper.sh
/usr/bin/python: No module named virtualenvwrapper
virtualenvwrapper.sh: There was a problem running the initialization hooks.

If Python could not import the module virtualenvwrapper.hook_loader,
check that virtualenvwrapper has been installed for
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python and that PATH is
set properly.

打印出来的东西很有帮助,上面说我需要检查VIRTUALENVWRAPPER_PYTHON=/usr/bin/python是否安装了virtualenvwrapper,PATH是否设置正确,唯一的问题是我不知道这些东西是什么意思,所以我的问题是:

  1. virtualenvwrapper已经为VIRTUALENVWRAPPER_PYTHON=/usr/bin/python“安装”了,这意味着什么?
    1.在这种情况下,正确设置的PATH是什么?
c9qzyr3d

c9qzyr3d1#

不完全确定你需要什么,但也许这会有帮助。它有点冗长,但希望能回答你的问题:
这里发生了很多事情。
首先,/usr/local/bin/virtualenvwrapper.sh是一个shell脚本,如果您阅读该脚本,您将看到以下代码:

# Locate the global Python where virtualenvwrapper is installed.
if [ "$VIRTUALENVWRAPPER_PYTHON" = "" ] 
then
    VIRTUALENVWRAPPER_PYTHON="$(command \which python)"
fi

这意味着virtualenvwrapper.sh脚本使用名为VIRTUALENVWRAPPER_PYTHON的环境变量来确定python安装。
第二,可以在一个系统上安装多个版本的Python(我目前有3:2.7、3.5和3.6)。无论如何,对于Linux系统,

/usr/bin/python

符号化地链接到其中一个版本。这是它在我的Linux系统上的样子:

lenovo:davidj ~ >  ls -l /usr/bin/python
lrwxrwxrwx 1 root root 24 Apr 28 23:36 /usr/bin/python -> 
/etc/alternatives/python
 lenovo:davidj ~ >  ls -l /etc/alternatives/python
lrwxrwxrwx 1 root root 18 Aug 31 14:56 /etc/alternatives/python -> 
/usr/bin/python3.6

因此,遵循符号链接链,当我运行

/usr/bin/python

我运行的是3.6版。我可以随意更改这些链接,使其指向2.7版、3.5版或我可能安装的任何其他版本。
这一切意味着:除非您将VIRTUALENVWRAPPER_PYTHON设置为特定的python安装,否则/usr/local/bin/virtualenvwrapper.sh将默认为/usr/bin/python,以确定您正在运行的默认python版本。
在我的例子中,在我的.bashrc文件中

export VIRTUALENVWRAPPER_PYTHON='/usr/bin/python3.6'

这意味着virtualenvwrapper将使用python 3. 6,因为我告诉它使用那个特定的版本。
在您的情况下,脚本失败是因为没有为/usr/bin/python指向的python版本安装virtualenvwrapper。要确定您的python版本,只需运行:

python -V

然后为该版本安装VirtualEnvwrapper。
希望这能帮上忙。

eeq64g8w

eeq64g8w2#

您只需要将这一行添加到~/.zshrc或.bash_profile:

export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python2
ukdjmx9f

ukdjmx9f3#

因为我的Debian 11没有python 2.7,我只是:
sudo ln -s /usr/bin/python3 /usr/bin/python
未观察到副作用

相关问题