6

我需要在预装 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__

有什么建议吗?

4

5 回答 5

8

你真的在你的自定义 python 构建上运行“make install”吗?通常你会想做类似的事情

./configure --prefix=/path/to/installdir  (other options)
make
make install

注意前缀可以是您拥有完全写入权限的任何目录,例如,我经常在共享主机环境中使用 $HOME/apps。

然后运行 ​​/path/to/installdir/bin/python,而不是构建目录中的那个。这应该会创建正确的变量,然后您可以安装 virtualenv。最好使用它的 setup.py 安装 virtualenv:

cd 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)
于 2010-02-17T03:07:27.750 回答
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

另请参阅相关问题“使用 virtualenv 使用不同的 Python 版本”

于 2010-02-17T03:21:39.070 回答
1

尝试在 lib/python2.6 中已经有 easy_install 的现有目录上安装时,我遇到了同样的错误。我必须把从 lib64/python2.6 到 lib/python2.6 的链接。

我并不是说我的修复是正确的修复,而是指出您可能会收到此错误的另一个原因。

于 2011-09-19T14:37:28.303 回答
0

现在,您可以使用 Anaconda 以非特权用户的身份轻松安装 Python:http: //continuum.io/downloads

它类似于这个问题。一次答案详细说明了创建新环境,因此您无需使用 virtual-env 并避免偶尔遇到的问题:将Anaconda 安装到虚拟环境中。

conda create -n myenv1 ipython scipy

于 2013-06-24T22:17:04.553 回答
0

我没有足够的代表将其添加为对@Crast 答案的评论,而且这个问题已有 4 年历史,但这可能对某人有用。在 Windows 中,您必须指向python.exe的路径,但在 Linux/OS X 中,您似乎只是指向该文件夹的路径。例子:

视窗:

virtualenv -p <PATH TO YOUR DESIRED PYTHON.EXE> venv

在当前目录的子文件夹“venv”中创建一个虚拟环境。

于 2015-02-04T17:42:55.120 回答