Comment puis-je contourner ce problème en créant un environnement de virtualenv avec Python-build personnalisé?

StackOverflow https://stackoverflow.com/questions/2278028

  •  21-09-2019
  •  | 
  •  

Question

Je dois exécuter un code sur une machine Linux avec Python 2.3.4 Pre installé. Je ne suis pas sur la liste sudoers pour cette machine, je construit Python 2.6.4 dans (un sous-répertoire) mon répertoire personnel. Alors je tenté d'utiliser virtualenv (pour la première fois), mais a obtenu:

$ 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

Dois-je installerai PYTHONHOME une certaine valeur? (I intentionnellement nommé mon ENV "ENV" faute d'un meilleur nom.)

Ne sachant pas si je peux ignorer ces erreurs, j'ai essayé d'installer le nez (0.11.1) dans mon 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__

Un conseil?

Était-ce utile?

La solution

Avez-vous fait exécuter "make install" sur votre build python personnalisé? Habituellement vous voulez faire quelque chose comme

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

Remarque Prefix peut être un répertoire que vous avez-écriture des autorisations complètes, par exemple, je l'utilise très souvent $ HOME / applications sur les environnements d'hébergement partagé.

Ensuite, exécutez / chemin / vers / installdir / bin / python, pas celui de votre répertoire de construction. Cela devrait créer les variables correctes, et après que vous pouvez installer virtualenv. Peut-être préférable d'installer virtualenv en utilisant son setup.py:

cd virtualenv_source_dir
/path/to/installdir/bin/python setup.py install

Cela peut nécessiter l'installation setuptools d'abord, en utilisant la même méthode.

Puis enfin:

# Just to be safe
export PATH="/path/to/installdir/bin:$PATH" 

virtualenv ~/ENV
~/ENV/bin/pip install somepackage # (and such)

Autres conseils

En plus de la suggestion de Crast de faire en sorte que vous avez réellement installé votre commande compilé Python, vous devez également vérifier que la coutume Python peut effectivement trouver ses bibliothèques. C'est l'indice que vous obtenez avec le message sur PYTHONHOME. Les erreurs d'importation indiquent que vous devez définir dans votre .bashrc ou configuration shell appropriée export PYTHONHOME=/path/to/python_installation.

En outre, lorsque vous essayez de dire virtualenv d'utiliser une version non-défaut de python, vous devez utiliser le drapeau de -p,--python, par exemple.

virtualenv --python=/path/to/python_installation/bin/python myenv

Voir aussi la question connexe, "Utiliser une autre version Python avec virtualenv" .

J'ai eu la même erreur lors de l'installation sur un répertoire existant qui avait déjà easy_install dans lib / python2.6. Je devais mettre un lien de lib64 / python2.6 à lib / python2.6.

Je ne dis pas que ma solution est la bonne solution, plutôt, je pointant vers une autre raison pour laquelle vous pourriez obtenir cette erreur.

scroll top