我需要在使用Python 2.3.4的Linux机器上运行一些代码 预装。我不是那台机器的sudoers列表,所以我 将Python 2.6.4构建到我的主目录中的(子目录)中。然后我 试图使用virtualenv(第一次),但得到了:
$ Python-2.6.4/python virtualenv/virtualenv.py ENV
New python executable in ENV/bin/python
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Installing setuptools.........
Complete output from command /apps/users/dspitzer/ENV/bin/python -c "#!python
\"\"\"Bootstrap setuptoo...
" /apps/users/dspitzer/virtualen...6.egg:
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
'import site' failed; use -v for traceback
Traceback (most recent call last):
File "<string>", line 67, in <module>
ImportError: No module named md5
----------------------------------------
...Installing setuptools...done.
Traceback (most recent call last):
File "virtualenv/virtualenv.py", line 1488, in <module>
main()
File "virtualenv/virtualenv.py", line 529, in main
use_distribute=options.use_distribute)
File "virtualenv/virtualenv.py", line 619, in create_environment
install_setuptools(py_executable, unzip=unzip_setuptools)
File "virtualenv/virtualenv.py", line 361, in install_setuptools
_install_req(py_executable, unzip)
File "virtualenv/virtualenv.py", line 337, in _install_req
cwd=cwd)
File "virtualenv/virtualenv.py", line 590, in call_subprocess
% (cmd_desc, proc.returncode))
OSError: Command /apps/users/dspitzer/ENV/bin/python -c "#!python
\"\"\"Bootstrap setuptoo...
" /apps/users/dspitzer/virtualen...6.egg failed with error code 1
我应该将PYTHONHOME设置为某个值吗? (我有意命名 我的ENV“ENV”缺少一个更好的名字。)
我不知道是否可以忽略这些错误,我尝试安装鼻子 (0.11.1)进入我的ENV:
$ cd nose-0.11.1/
$ ls
AUTHORS doc/ lgpl.txt nose.egg-info/ selftest.py*
bin/ examples/ MANIFEST.in nosetests.1 setup.cfg
build/ functional_tests/ NEWS PKG-INFO setup.py
CHANGELOG install-rpm.sh* nose/ README.txt unit_tests/
$ ~/ENV/bin/python setup.py install
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Traceback (most recent call last):
File "setup.py", line 1, in <module>
from nose import __version__ as VERSION
File "/apps/users/dspitzer/nose-0.11.1/nose/__init__.py", line 1, in <module>
from nose.core import collector, main, run, run_exit, runmodule
File "/apps/users/dspitzer/nose-0.11.1/nose/core.py", line 3, in <module>
from __future__ import generators
ImportError: No module named __future__
有什么建议吗?
答案 0 :(得分:8)
你真的在你的自定义python构建上运行“make install”吗?通常你会想要做像
这样的事情./configure --prefix=/path/to/installdir (other options)
make
make install
注意前缀可以是您具有完全写入权限的任何目录,例如我经常在共享托管环境中使用$ HOME / apps。
然后运行/ path / to / installdir / bin / python,而不是构建目录中的那个。这应该创建正确的变量,然后你可以安装virtualenv。最好使用setup.py:
安装virtualenvcd virtualenv_source_dir
/path/to/installdir/bin/python setup.py install
这可能需要先使用相同的方法安装setuptools。
最后:
# Just to be safe
export PATH="/path/to/installdir/bin:$PATH"
virtualenv ~/ENV
~/ENV/bin/pip install somepackage # (and such)
答案 1 :(得分:2)
除了Crast建议确保您实际安装了自定义编译的Python之外,您还应该检查自定义Python是否可以实际找到它的库。这是您收到有关PYTHONHOME
的消息的提示。导入错误建议您需要在.bashrc
或相应的shell配置export PYTHONHOME=/path/to/python_installation
中进行设置。
此外,当您试图告诉virtualenv使用非默认版本的python时,您需要使用-p,--python
标志,例如,
virtualenv --python=/path/to/python_installation/bin/python myenv
答案 2 :(得分:1)
尝试在lib / python2.6中已经有easy_install的现有目录上安装时遇到了同样的错误。我不得不把lib64 / python2.6的链接放到lib / python2.6。
我并不是说我的解决方案是正确的解决方案,而是我指的是您可能会遇到此错误的另一个原因。
答案 3 :(得分:0)
现在,您可以使用Anaconda轻松安装Python作为无特权用户:http://continuum.io/downloads
这与此问题类似。在创建新环境的答案详细信息之后,您不需要使用virtual-env并避免偶尔出现问题:Installing Anaconda into a Virtual Environment。
conda create -n myenv1 ipython scipy
答案 4 :(得分:0)
我没有足够的代表来添加这个作为对@Crast的回答的评论,这个问题是4岁,但这可能对某人有用。在Windows中,你必须走出 python.exe ,但似乎在Linux / OS X中你只是路径到该文件夹。例如:
<强>窗:强>
virtualenv -p <PATH TO YOUR DESIRED PYTHON.EXE> venv
在当前目录中的子文件夹“venv”中创建虚拟环境。