use*_*629 34 python linux ubuntu amazon-ec2 virtualenvwrapper
我正在使用Ubuntu 14.04 LTS实例在Amazon EC2上设置Django项目.我想用Python 3编写我的代码.我被告知,最好的方法是使用virtualenvwrapper.我已virtualenvwrapper成功安装并放入
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.4
export PROJECT_HOME=$HOME/Devel
source /usr/local/bin/virtualenvwrapper.sh
进入我的.bashrc档案.现在我明白了:
 /usr/bin/python3.4: Error while finding spec for 'virtualenvwrapper.hook_loader' (<class 'ImportErro
 r'>: 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/python3.4 and that PATH is
 set properly.
我怎样才能解决这个问题?
tro*_*ish 27
-p您可以将所需的解释器配置为默认值,而不是使用flag 指定不同的python解释器.
据virtualenvwrapper的文件,virtualenvwrapper.sh找到的第一个python和virtualenv上的程序$PATH,并记住它们以供以后使用.
如果您virtualenvwrapper的操作系统的默认python口译器(/usr/bin/python)上没有安装,请确保覆盖环境变量,如下所示:
VIRTUALENVWRAPPER_PYTHON 到你的python解释器的完整路径VIRTUALENVWRAPPER_VIRTUALENV 走向virtualenv的全部道路例如,在我的.bash_profile(Mac)上:
#virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.5/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=/Library/Frameworks/Python.framework/Versions/3.5/bin/virtualenv
source /Library/Frameworks/Python.framework/Versions/3.5/bin/virtualenvwrapper.sh
通过运行重新加载新变量 source ~/.bash_profile
nph*_*dke 10
在最近的Homebrew更新后我遇到了同样的问题.
在过去,大多数人都会遇到pip install virtualenvwrapper系统站点包,它会起作用.
Homebrew打破了这个工作流程1)不再遮蔽系统python,2)不再将符号链接到pip pip2/pip3.
大多数用户在找不到时会意识到这一点pip,然后尝试使用pip2/pip3.但是,使用pip2/pip3会产生问题,因为virtualenvwrapper现在已安装python2/python3,但不是python.因此,当virtualenvwrapper运行并调用python时,它将无法virtualenvwrapper/virtualenv在系统python的站点包中找到python包.
明确设置VIRTUALENVWRAPPER_PYTHON是最干净的修复,而不是黑客.这是我在dotfiles中的表现
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3
x0s*_*x0s 10
在 Ubuntu 20.04 上,尝试使用 python 3.8(默认为 python 3)安装 virtualenvwrapper 并使用 python 2.7(默认为 python 2)初始化包装器时可能会出现问题。
手动设置python3解释器
export VIRTUALENVWRAPPER_PYTHON=$(which python3)
source /usr/local/bin/virtualenvwrapper.sh
让我们得到一些信息:
$ which python
/usr/bin/python
$ python --version
Python 2.7.18rc1
$ which python3
/usr/bin/python3
$ python3 --version
Python 3.8.2
$ pip3 --version
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
按照指南,我们被要求使用 pip (python 3) 安装 virtualenvwrapper:
pip3 install virtualenvwrapper
virtualenvwrapper 的当前稳定版本 (4.8.4)链接到默认python版本,我们看到它是 python 2.7:
VIRTUALENVWRAPPER_PYTHON="$(command \which python)"
所以,问题是我们在 python3 中安装了 virtualenvwrapper 并尝试使用 python2(采购 shell 脚本)进行初始化。因此,修复方法是通过覆盖默认值使用 python 3 进行初始化。
但是,很可能下一个版本之一将包含一个已经合并到 master的修复程序,从最高到最低的 python 版本:
VIRTUALENVWRAPPER_PYTHON="$(command \which python)"
在文档中使用,修复是在采购之前手动设置要使用的 Python 解释器:不是 python (2.7) 但 python3 (3.8 here)
if [ "${VIRTUALENVWRAPPER_PYTHON:-}" = "" ]
then
    for NAME in python3 python2 python
    do
        python_executable="$(which $NAME 2>/dev/null)"
        if ! [ -z "$python_executable" ]
        then
            if $python_executable -m 'virtualenvwrapper.hook_loader' --help >/dev/null 2>&1
            then
                VIRTUALENVWRAPPER_PYTHON=$python_executable
                break
            fi
        fi
    done
如果你使用 brew 来安装 python,你需要确保你设置了这个环境变量:
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python
在您的 bash_profile (或您使用的任何外壳)中。
小智 8
由于我时不时地更改 python 版本,因此该配置到目前为止一直有效,因为它是动态的:
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/development
export VIRTUALENVWRAPPER_PYTHON=$(which python3)
export VIRTUALENVWRAPPER_VIRTUALENV=$(which virtualenv)
source $(which virtualenvwrapper.sh)
然后是:
source ~/.zshrc
按照乔恩的建议,我跑了:
 ubuntu@ip-172-31-22-65:~$ mkvirtualenv -p /usr/bin/python3.4 env1
 Running virtualenv with interpreter /usr/bin/python3.4
 Using base prefix '/usr'
 New python executable in env1/bin/python3.4
 Also creating executable in env1/bin/python
 Installing setuptools, pip...done.
 (env1)ubuntu@ip-172-31-22-65:~$ deactivate
 ubuntu@ip-172-31-22-65:~$ ls
 ubuntu@ip-172-31-22-65:~$ ls -a
 .  ..  .bash_history  .bash_logout  .bashrc  .cache  .pip  .profile  .ssh  .virtualenvs
 ubuntu@ip-172-31-22-65:~$ workon
 env1
 ubuntu@ip-172-31-22-65:~$ workon env1
 (env1)ubuntu@ip-172-31-22-65:~$ which python
 /home/ubuntu/.virtualenvs/env1/bin/python
 (env1)ubuntu@ip-172-31-22-65:~$  python -V
 Python 3.4.0
我已经保留了上面列出的 .bashrc。正如 Jon 上面所说,安装 virtualenvwrapper 会安装在默认的 python 上,并在您创建的任何 virtualenv 中使用默认的 python,除非 -p 标志用于指定不同的 python 解释器。
| 归档时间: | 
 | 
| 查看次数: | 35272 次 | 
| 最近记录: |