Python Virtualenv - немає модуля з іменем virtualenvwrapper.hook_loader


79

Я працюю під управлінням Mac OS 10.6.8. і хотів встановити на додаток до python 2.6 також python 2.7 і використовувати python 2.7 у новому virtualenv. Я виконав наступні кроки:

Я завантажив python 2.7 і встановив його:

http://www.python.org/ftp/python/2.7.3/python-2.7.3-macosx10.6.dmg

Потім я запускаю команду для налаштування нового virtualenv за допомогою python2.7:

mkvirtualenv --python=python2.7 mynewenv

Мій .bash_profile виглядає так:

# needed for virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
source /usr/local/bin/virtualenvwrapper.sh


# Setting PATH for Python 2.7
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH

Тепер, коли я відкриваю консоль, я отримую таке повідомлення про помилку.

ImportError: No module named virtualenvwrapper.hook_loader
virtualenvwrapper.sh: There was a problem running the initialization hooks. If Python could not import the module virtualenvwrapper.hook_loader, check that virtualenv has been installed for VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python and that PATH is set properly.

Я також виявив в іншому дописі, що мені слід оновити virtualenvwrapper. Це не допомогло.

sudo pip install virtualenvwrapper --upgrade

Будь-яка допомога буде вдячна.


4
Ви бачили це чи можете спробувати іншим способомeasy_install
помилуйтеся

Дякую, я подивився пост. Але мені не вдається встановити virtualenv для python 2.7. Повідомлення полягає в тому, що virtualenv вже встановлено для версії 2.6. Я запустив такі команди: ~ TK $ which python /Library/Frameworks/Python.framework/Versions/2.7/bin/python ~ TK $ sudo pip install virtualenv Вимога вже виконана (використовуйте --upgrade для оновлення): virtualenv в / Бібліотека / Python / 2.6 / site-пакети / virtualenv-1.6-py2.6.egg Очищення ...
Thomas Kremmel

Я просто дивився virtualenv в статус , і це не виглядає , як вона підтримує Py 2,7.
martineau

2
Тільки примітка - я вирішив це питання в іншому випадку. Я почав робити virtualenv через, mkvirtualenvа потім зупинив його (за допомогою Ctrl+C). Спробувавши знову зробити віртуальний, залишились залишки минулого разу. Я зайшов у свою папку envs і видалив не повністю побудоване середовище. Після цього та сама mkvirtualenvкоманда працювала належним чином.
driftcatcher

2
Коментар Ібо Янга також був присвячений моїй установці Ubuntu. Тільки будьте обережні з написанням ... вищезазначене має експортувати VIRTUALENVWRAPPER_PYTHON = / usr / bin / python3 із знаком "v" у VIRTUALENVWRAPPER
Кевін,

Відповіді:


53

Проблему вирішено, виконавши наведені нижче дії:

#switch the /usr/bin/python link to point to current python link
cd /usr/bin
sudo mv python python.bak
sudo ln -s /Library/Frameworks/Python.framework/Versions/Current/bin/python python

Змініть порядок команди експорту, щоб вона була розміщена перед командами virtualenv у моєму файлі .bash_profile:

PATH=/Library/Frameworks/Python.framework/Versions/2.7/bin:$PATH
export PATH

# needed for virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

Повторно встановіть setuptools, просту установку та PIP. Це, очевидно, потрібно для того, щоб вони працювали належним чином з новою версією python:

sudo sh setuptools-0.6c11-py2.7.egg

sudo easy_install-2.7 pip

pip install virtualenv

1
Дякую - після оновлення моєї інсталяції Python 2.7 на Mac Mountain Lion у мене була та ж проблема, і це виправило.
A. Jesse Jiryu Davis

3
На Mountain Lion для мене фокусом було забезпечення PATH для / opt / local / bin встановленого ПЕРЕД джерелом .... Мені не довелося возитися з посиланнями на OSX Python у / usr / bin чи з чимсь іншим. Також WORKON_HOME тепер за замовчуванням, якщо не встановлено значення $ HOME / .virtualenvs
Позначити

4
+1 для коментаря @Mark. Також для користувачів пивоваріння: фактичний шлях такий usr/local/Cellar/python/<PYTHON-VERSION>/bin/.
rsenna

Дякую, це допомагає мені після компіляції python 2.7.4 у Debian.
зулу

У моєму випадку проблема сталася лише тому, чому я намагався віддалено ввійти в іншу машину. Підказка, це означає, що проблема полягає не в локальній машині, а в машині, в яку ви входите! Думав, я згадаю про це на випадок, якщо хтось буде там.
посмішка,

23

Крім того, якщо у вас є макпорт, переконайтеся, що /opt/local/Library/Frameworks/Python.framework/Versions/2.7/binвін вказаний до /Library/Frameworks/Python.framework/Versions/2.7/binі /usr/local/binв PATH. Потім встановіть у собі наступне .profile:

export VIRTUALENVWRAPPER_PYTHON=`which python`
export VIRTUALENVWRAPPER_VIRTUALENV=`which virtualenv`
source `which virtualenvwrapper.sh`

4
Я встановлюю python3 поряд з моїм os python2 і налаштування VIRTUALENVWRAPPER_PYTHONвирішило мою проблему.
Йохан Гов

8

У моєму випадку додавання цього рядка до мого файлу .zshrc зробило трюк,

export VIRTUALENVWRAPPER_PYTHON=/usr/local/Cellar/python/2.7.13/bin/python2.7

3
export VIRTUALENVWRAPPER_PYTHON=/usr/local/Cellar/python/3.6.5/bin/python3.6для останньої версії.
oba2311

у моєму bash_profile,export VIRTUALENVWRAPPER_PYTHON="which python3"
Fai Zal Dong

8

Для тих, хто використовує Ubuntu 18.04 та Python 3+ , це зробило для мене фокус:

which python3 # outputs /usr/bin/python3 
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3  
source `which virtualenvwrapper.sh`  

4

Це трапилося зі мною, і я вирішив це, перевстановивши pip. Сталося те, що which pipдало /usr/bin/pipв результаті, тоді як which pythonдало /usr/local/bin/python. Шлях для pipповинен бути/usr/local/bin/pip . Можливо, це зламалося, коли я оновив інсталяцію Python.

Якщо ви будете слідувати документації pip, ви зможете легко переінсталювати pipпоточні налаштування Python. Тобі потрібно:

  1. Завантажте скрипт get-pip.py (безпосередньо зpip документації).
  2. Біжи python get-pip.py.

Це вирішило проблему для мене.


3

Існує ряд речей, які можуть спричинити цю помилку. Якщо ваше оточення є

  • CentOS 7, з python3встановленим зepel-release
  • pip3 встановлений за допомогою python3.4 get-pip.py
  • virtualenvwrapper встановлений за допомогою pip3
  • Віртуальне середовище python, створене за допомогою mkvirtualenv -p /usr/bin/python3.4

Потім з будь-якої причини віртуальне середовище створюється без бібліотеки virtualenvwrapper. Ви можете вирішити це, просто встановивши його знову, але цього разу зсередини virtlualenv

[user@localhost ~] $ mkvirtualenv -p /usr/bin/python3.4 venv
Using base prefix '/usr'
New python executable in /home/user/.virtualenvs/venv/bin/python3.4
Also creating executable in /home/user/.virtualenvs/venv/bin/python
Installing setuptools, pip, wheel...done.
virtualenvwrapper.user_scripts creating /home/user/.virtualenvs/venv/bin/predeactivate
virtualenvwrapper.user_scripts creating /home/user/.virtualenvs/venv/bin/postdeactivate
virtualenvwrapper.user_scripts creating /home/user/.virtualenvs/venv/bin/preactivate
virtualenvwrapper.user_scripts creating /home/user/.virtualenvs/venv/bin/postactivate
virtualenvwrapper.user_scripts creating /home/user/.virtualenvs/venv/bin/get_env_details
/home/user/.virtualenvs/venv/bin/python3.4: Error while finding spec for 'virtualenvwrapper.hook_loader' (<class 'ImportError'>: No module named 'virtualenvwrapper')
/home/user/.virtualenvs/venv/bin/python3.4: Error while finding spec for 'virtualenvwrapper.hook_loader' (<class 'ImportError'>: No module named 'virtualenvwrapper')

# the virtualenv should now activated
(venv)[user@localhost ~] $ pip install virtualenvwrapper

2

Мені просто довелося переконатися, що / usr / local / bin / python існує.

Для мене це було просто:

ln -s /usr/local/bin/python2.7 /usr/local/bin/python

1

Я отримую ту ж помилку. З'ясував, що у мене була стара версія pip. Я виправив помилку, просто оновивши піп.


0

Я щойно встановив python 3.5, спробував virtualenvwrapper, а потім мала цю проблему. Я зрозумів, що python3.5 був встановлений у, /usr/local/bin/python3.5а НЕ /usr/bin/python3.5. Отже, я переглянув свій сценарій .bash_profile, щоб виглядати наступним, і зараз все, здається, працює

# Setting PATH for Python 3.5
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.5/bin:${PATH}"
export PATH
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3.5
export WORKON_HOME=$HOME/.virtualenvs
source /Users/bentaub/.virtualenvs/djangodev/bin/virtualenvwrapper.sh

Я достатній початківець, щоб не бути впевненим, як цей "локальний" на шляху до python3.5 вплине на мене в довгостроковій перспективі, але наразі це працює.


0

У мене була ця проблема після видалення в virtualenvwrapperпакет. Коли я увійшов до будь-якого користувача (або suдо іншого), я отримав:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named virtualenvwrapper.hook_loader                                                                                                                                                                       
virtualenvwrapper.sh: There was a problem running the initialization hooks.                                                                                                                                                      

If Python could not import the module virtualenvwrapper.hook_loader,                                                                                                                                                             
check that virtualenv has been installed for                                                                                                                                                                                     
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python and that PATH is                                                                                                                                                                        
set properly.

Рішенням було видалити /etc/bash_completion.d/virtualenvwrapperфайл.

Редагувати:

Не видаляйте вищезазначений файл, інакше він не буде відтворений, якщо перевстановити virtualenvwrapper. Замість того, що вам потрібно зробити , це пакет , коли ви видалите його. Ось так на Debian:purgevirtualenvwrapper

apt-get remove --purge virtualenvwrapper

0

Спробуйте видалити свій virtualenvі virtualenvwrapperвстановити його знову, використовуючи pipверсію 2.7 (я думаю).

Я зіткнувся з тією ж помилкою, я щойно зробив це і вирішив свою проблему.

Я використовую U


0

Незважаючи на те, що є прийнята відповідь, я думав, що поставлю те, що мені це дозволило.

Спочатку я встановив Python і щойно оновив його за допомогою Homebrew . Я також використовую ZSH, тому, якщо деякі біти не зовсім відповідають вашим результатам, це може бути причиною.

Запустивши brew info python та переглянувши результати, я знайшов наступний приємний шматочок інформації:

If you wish to have this formula's python executable in your PATH then add
the following to ~/.zshrc:
    export PATH="/usr/local/opt/python/libexec/bin:$PATH"

Тому я додав це до мого сценарію запуску терміналу, як показано, і помилка більше не відображається.

Примітка: Я вставив це в іншу частину мого PATH, і помилка зберігалася при запуску.


0

Натрапив на подібну проблему після встановлення проекту Conda / Anaconda. Це питання було дуже корисним для вирішення моєї проблеми на MAC. При вирішенні проблеми моя .zshrcвідповідна частина виглядала так:

export VIRTUALENVWRAPPER_PYTHON=$HOME/Applications/conda/bin/python
source $HOME/Applications/conda/bin/virtualenvwrapper.sh

Це залежить від того, де у мене встановлено conda, і вам доведеться це зрозуміти у вашому власному випадку. Щоб отримати специфіку для даного середовища, залежно від того, де ви встановили анаконду, ви можете використовувати наступне:

$  ~/ -name virtualenvwrapper.sh # to see where you have this. May already be prefilled in your shell profile[.zshrc or .profile]

$ which python   # to know the default python your project or rather where conda has installed python for you

НЕ ЗАБУВАЙТЕ ВИДАЛИТИ І ВСТАНОВИТИ virtualenv та virtualenvwrapper, як це було виділено в інших відповідях.


0

Щойно наткнувся на це питання на Centos 7.4.

Жодна з наведених відповідей не підходила моєму випадку. Після невеликого розкопування я визначив це для занадто суворих дозволів на файли в бібліотеках python (я думаю, встановлення python на Centos трохи відрізняється від інших систем POSIX).

Отже, якщо все інше не вдається, ви можете перевірити, чи читає ваші бібліотеки python користувач, з яким ви намагаєтесь запустити virtualenvwrapper.

Зокрема перевірте: /usr/lib/python3.6 /usr/lib64/python3.6 (змінити шляхи для різних версій python).

Якщо ви бачите це groupі othersне маєте там дозволів на читання та виконання, додайте їх: sudo chmod og+rx -R /usr/lib/python3.6 sudo chmod og+rx -R /usr/lib64/python3.6

Примітка: Я не впевнений, чи це працює проти політики безпеки Centos, але це, мабуть, безпечно, якщо ви не даєте writeдозволів.


0

У моїй ситуації (OS X 10.13.6) це вдалося

brew install python2 --upgrade

0

У мене була та ж проблема, що і ця, і я витратив стільки часу на налаштування того, що не було. І нарешті я з’ясував, що не так.

Спочатку я подивився, де існує папка virtualenvwrapper. У моєму випадку /usr/local/lib/python3.7/site-packages. Усередині папки знаходиться hook_loader.py, який спричинив помилку.

Далі я використав сценарій python.

python3

import sys;print('\n'.join(sys.path))

Я не зміг знайти каталог /usr/local/lib/python3.7/site-packages, тому, нарешті, я написав:

export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.7/site-packages

у файл .bashrc. Готово.

Значення ПІФОНОВОЇ ШЛЯХИ

Як ви можете бачити в наведеному вище посиланні, PYTHONPATH збільшує шлях пошуку за замовчуванням для модулів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.