我正在运行 Precise Pangolin amd64。我从 ppa:fkrull/deadsnakes 安装了 Python 3.3。
现在我想在 virtualenv 中实际使用这个新的 Python 版本。但是我该怎么做呢?我收到以下错误:
$ virtualenv --no-site-packages --distribute -p /usr/bin/python3.3 ~/.virtualenvs/pywork3
Running virtualenv with interpreter /usr/bin/python3.3
The --no-site-packages flag is deprecated; it is now the default behavior.
New python executable in /home2/USERNAME/.virtualenvs/pywork3/bin/python3.3
Also creating executable in /home2/USERNAME/.virtualenvs/pywork3/bin/python
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/site.py", line 73, in <module>
__boot()
File "/usr/local/lib/python2.7/site-packages/site.py", line 2, in __boot
import sys, imp, os, os.path
ImportError: No module named 'imp'
ERROR: The executable /home2/USERNAME/.virtualenvs/pywork3/bin/python3.3 is not functioning
ERROR: It thinks sys.prefix is '/home2/USERNAME/.virtualenvs' (should be '/home2/USERNAME/.virtualenvs/pywork3')
ERROR: virtualenv is not compatible with this system or executable
Run Code Online (Sandbox Code Playgroud)
相反,如果我明确使用python3.3调用 virtualenv,则会收到此错误:
$ python3.3 /usr/bin/virtualenv --no-site-packages --distribute -p /usr/bin/python3.3 ~/.virtualenvs/pywork3
Traceback (most recent call last):
File "/usr/bin/virtualenv", line 2, in <module>
import virtualenv
ImportError: No module named 'virtualenv'
Run Code Online (Sandbox Code Playgroud)
我被困住了。任何帮助是极大的赞赏!
编辑:按照@thefourtheye 的建议,我清除了本地site-packages目录(实际上只删除了site.py)。现在我更进一步,但virtualenv抱怨缺少easy_install:
Error [Errno 2] No such file or directory:
'/home2/USERNAME/.virtualenvs/pywork3/bin/easy_install' while executing command
/home2/USERNAME/.virt...rk3/bin/easy_install /usr/share/python-virtualenv/pip-1.1.tar.gz
Run Code Online (Sandbox Code Playgroud)
我确实安装了 package python3-setuptools,它安装了 easy_install 的 Py3 版本。
编辑2:
这是详细输出,没有明确传递--distributeand --no-site-packages,因为这两个开关是我的virtualenv 的默认行为:
$ virtualenv --verbose -p /usr/bin/python3.3 ~/.virtualenvs/pywork3
Running virtualenv with interpreter /usr/bin/python3.3
Creating /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3
Symlinking Python bootstrap modules
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/config-3.3m
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/lib-dynload
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/os.py
Ignoring built-in bootstrap module: posix
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/posixpath.py
Cannot import bootstrap module: nt
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/ntpath.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/genericpath.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/fnmatch.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/locale.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/encodings
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/codecs.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/stat.py
Cannot import bootstrap module: UserDict
Cannot import bootstrap module: copy_reg
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/types.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/re.py
Cannot import bootstrap module: sre
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/sre_parse.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/sre_constants.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/sre_compile.py
Ignoring built-in bootstrap module: zlib
Cannot import bootstrap module: _abcoll
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/warnings.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/linecache.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/abc.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/io.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/_weakrefset.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/copyreg.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/tempfile.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/random.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/__future__.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/collections
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/keyword.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/tarfile.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/shutil.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/struct.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/copy.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/base64.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/bisect.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/_dummy_thread.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/hashlib.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/heapq.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/hmac.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/reprlib.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/rlcompleter.py
Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/weakref.py
Creating /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/site-packages
Writing /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/site.py
Writing /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/orig-prefix.txt
Writing /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/no-global-site-packages.txt
Creating parent directories for /home2/USERNAME/.virtualenvs/pywork3/include
Symlinking /home2/USERNAME/.virtualenvs/pywork3/include/python3.3m
Creating /home2/USERNAME/.virtualenvs/pywork3/bin
New python executable in /home2/USERNAME/.virtualenvs/pywork3/bin/python3.3
Changed mode of /home2/USERNAME/.virtualenvs/pywork3/bin/python3.3 to 0o755
Also creating executable in /home2/USERNAME/.virtualenvs/pywork3/bin/python
Changed mode of /home2/USERNAME/.virtualenvs/pywork3/bin/python to 0o755
Testing executable with /home2/USERNAME/.virtualenvs/pywork3/bin/python3.3 -c "
import sys
prefix = sys.prefix
if sys.version_info[0] == 3:
prefix = prefix.encode('utf8')
if hasattr(sys.stdout, 'detach'):
sys.stdout = sys.stdout.detach()
elif hasattr(sys.stdout, 'buffer'):
sys.stdout = sys.stdout.buffer
sys.stdout.write(prefix)
"
Got sys.prefix result: '/home2/USERNAME/.virtualenvs/pywork3'
Creating /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/distutils
Writing /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/distutils/__init__.py
Writing /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/distutils/distutils.cfg
Using existing distribute egg: /usr/share/python-virtualenv/distribute-0.6.24.tar.gz
Installing distribute..............................................................................................................................................................................................................................................................................................................................................................................................................done.
Installing existing pip-1.1.tar.gz distribution: /usr/share/python-virtualenv/pip-1.1.tar.gz
Installing pip...
Error [Errno 2] No such file or directory: '/home2/USERNAME/.virtualenvs/pywork3/bin/easy_install' while executing command /home2/USERNAME/.virt...rk3/bin/easy_install /usr/share/python-virtualenv/pip-1.1.tar.gz
...Installing pip...done.
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 2283, in <module>
main()
File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 938, in main
never_download=options.never_download)
File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 1054, in create_environment
install_pip(py_executable, search_dirs=search_dirs, never_download=never_download)
File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 643, in install_pip
filter_stdout=_filter_setup)
File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 976, in call_subprocess
cwd=cwd, env=env)
File "/usr/lib/python3.3/subprocess.py", line 818, in __init__
restore_signals, start_new_session)
File "/usr/lib/python3.3/subprocess.py", line 1416, in _execute_child
raise child_exception_type(errno_num, err_msg)
FileNotFoundError: [Errno 2] No such file or directory: '/home2/USERNAME/.virtualenvs/pywork3/bin/easy_install'
Run Code Online (Sandbox Code Playgroud)
小智 59
Python 3.3 内置了 venv。
http://docs.python.org/3/library/venv.html#module-venv
只需运行
pyvenv-3.3 /path/to/environment
Run Code Online (Sandbox Code Playgroud)
然后激活它
source /path/to/environment/bin/activate
Run Code Online (Sandbox Code Playgroud)
这个内置版本的 virtualenv 比您可能习惯的要灵活得多。例如,您可以扩展 EnvBuilder 来做您想做的任何事情。您可以从下面的链接复制 EnvBuilder 的示例实现并使用它:http ://docs.python.org/3/library/venv.html#an-example-of-extending-envbuilder
上面的脚本可能完成了我们期望从 virtualenv 中获得的大部分内容。所以如果你只需要一个带有 easy_install 和 pip 的 virtualenv,你应该很高兴。
如果您仍然感到困惑,请参阅下面的@MarkOfSine编辑以了解如何开始运行。
添加到上面,并根据文档:
例如,在执行后:pyvenv-3.3 /path/to/my_project/venv
您可以运行distribute_setup.py,这似乎可以做各种事情,但实际上您最终会easy_install在您的./my_project/venv/bin目录中。
这然后可以用于安装pip等。
它没有说明您应该distribute_setup.py从哪里获取,所以我从以下位置下载:
http://python-distribute.org/distribute_setup.py
Run Code Online (Sandbox Code Playgroud)
并使用激活的环境:
cd /path/to/my_project
source venv/bin/activate
Run Code Online (Sandbox Code Playgroud)
跑:
python distribute_setup.py
Run Code Online (Sandbox Code Playgroud)
和
easy_install pip
Run Code Online (Sandbox Code Playgroud)
然后在 python 2.x 上完成了与 virtualenv 更内联的虚拟环境的设置
小智 50
它比看起来更容易:
virtualenv -p /usr/bin/python3 yourenv
source yourenv/bin/activate
pip install package-name
Run Code Online (Sandbox Code Playgroud)
真的有效:)
the*_*eye 25
备份站点包。
cp -r /usr/local/lib/python2.7/site-packages/ /tmp/site-packages
截断该目录
rm -rf /usr/local/lib/python2.7/site-packages/
现在尝试相同
virtualenv --no-site-packages --distribute -p /usr/bin/python3.3 ~/.virtualenvs/pywork3
不用pip安装
virtualenv --no-site-packages --distribute -p /usr/bin/python3.3 ~/.virtualenvs/pywork3 --no-pip
编辑:看起来 virtualenv (1.7.1.2) 和 python3.3 的版本不兼容。所以,请试试这个
使用卸载 python-virtualenv sudo apt-get remove python-virtualenv
wget http://peak.telecommunity.com/dist/ez_setup.py; sudo python ez_setup.py 这将安装最新的easy_install。
sudo easy_install pip
sudo pip install virtualenv
virtualenv --no-site-packages --distribute -p /usr/bin/python3.3 ~/.virtualenvs/pywork3
txo*_*mon 11
你这样做太复杂了。如果它包含在 中python3,只需使用以下命令创建它:
python3 -m venv
Run Code Online (Sandbox Code Playgroud)
如果您愿意,您甚至可以创建别名
alias virtualenv3='python3 -m venv'
Run Code Online (Sandbox Code Playgroud)
根据机器,您可能需要指定解释器:
alias virtualenv3='python3 -m venv -p python3'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
138439 次 |
| 最近记录: |