Python virtualenv选错了库

时间:2015-06-27 10:08:42

标签: python virtualenv qgis pygments

$ virtualenv --version
13.0.3

我使用Python3创建了一个新的virtualenv,无需访问全局站点包。

$ virtualenv --no-site-packages venv_pygments --python=/usr/local/bin/python3
Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/usr/local/Cellar/python3/3.4.3/Frameworks/Python.framework/Versions/3.4'
New python executable in venv_pygments/bin/python3.4
Also creating executable in venv_pygments/bin/python
Installing setuptools, pip, wheel...done.

然后我使用virtualenv的Python3解释器并尝试导入pygments

$ cd venv_pygments 
$ venv_pygments  bin/python3
Python 3.4.3 (default, May  1 2015, 19:14:18) 
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.49)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygments
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Applications/QGIS.app/Contents/Resources/python/pygments/__init__.py", line 46
    except TypeError, err:
                    ^
SyntaxError: invalid syntax

pip freeze虽然只显示这些包

$ bin/pip freeze
wheel==0.24.0

所以似乎virtualenv的Python3正在访问全球网站包。我怎么能避免这种情况?

当我为virtualenv

安装pygments时,它不会改变
$ bin/pip install pygments
Collecting pygments
  Using cached Pygments-2.0.2-py3-none-any.whl
Installing collected packages: pygments
Successfully installed pygments-2.0.2
$ venv_pygments  bin/python3
Python 3.4.3 (default, May  1 2015, 19:14:18) 
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.49)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygments
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Applications/QGIS.app/Contents/Resources/python/pygments/__init__.py", line 46
    except TypeError, err:
                    ^
SyntaxError: invalid syntax
>>> 

注意:原始问题已根据评论更新。

1 个答案:

答案 0 :(得分:4)

创建隔离环境,无需访问全局站点包。有意启用/禁用该行为。最近版本默认禁用访问。

我假设您需要一个隔离的环境来测试Python 3.3.4。 下面我使用的是系统python 2.7.6提供的virtualenv

$ virtualenv --version
1.11.2

$ virtualenv
You must provide a DEST_DIR
Usage: virtualenv [OPTIONS] DEST_DIR

Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit
  -v, --verbose         Increase verbosity.
  -q, --quiet           Decrease verbosity.
  -p PYTHON_EXE, --python=PYTHON_EXE
                        The Python interpreter to use, e.g.,
                        --python=python2.5 will use the python2.5 interpreter
                        to create the new environment.  The default is the
                        interpreter that virtualenv was installed with
                        (/usr/bin/python)
  --clear               Clear out the non-root install and start from scratch.
  --no-site-packages    DEPRECATED. Retained only for backward compatibility.
                        Not having access to global site-packages is now the
                        default behavior.
  --system-site-packages
                        Give the virtual environment access to the global
                        site-packages.
  --always-copy         Always copy files rather than symlinking.
  --unzip-setuptools    Unzip Setuptools when installing it.
  --relocatable         Make an EXISTING virtualenv environment relocatable.
                        This fixes up scripts and makes all .pth files
                        relative.
  --no-setuptools       Do not install setuptools (or pip) in the new
                        virtualenv.
  --no-pip              Do not install pip in the new virtualenv.
  --extra-search-dir=DIR
                        Directory to look for setuptools/pip distributions in.
                        This option can be used multiple times.
  --never-download      DEPRECATED. Retained only for backward compatibility.
                        This option has no effect. Virtualenv never downloads
                        pip or setuptools.
  --prompt=PROMPT       Provides an alternative prompt prefix for this
                        environment.
  --setuptools          DEPRECATED. Retained only for backward compatibility.
                        This option has no effect.
  --distribute          DEPRECATED. Retained only for backward compatibility.
                        This option has no effect.

我创建了一个virtualenv,更改到目录并使用相对路径来解决这个virtualenv中的python解释器和pip。

$ virtualenv --no-site-packages venv_pygments
New python executable in venv_pygments/bin/python
Installing setuptools, pip...done.
$ cd venv_pygments/
$ bin/pip install pygments
Downloading/unpacking pygments
  Downloading Pygments-2.0.2-py2-none-any.whl (672kB): 672kB downloaded
Installing collected packages: pygments
Successfully installed pygments
Cleaning up...
$ bin/python
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygments
>>> pygments.__version__
'2.0.2'

在创建virtualenv时,您需要继续使用选项

  

- 蟒=的/ usr / local / bin中/ python3

引用你的Python 3.3.4解释器。

最近的默认virtualenv通常只安装了几个软件包。如果您拥有更多,则可以访问全球站点包。

$ bin/pip freeze
Pygments==2.0.2
argparse==1.2.1
wsgiref==0.1.2