Python Virtualenv - Không có mô-đun nào có tên virtualenvwrapper.hook_loader


79

Tôi đang chạy Mac OS 10.6.8. và muốn cài đặt ngoài python 2.6 còn có python 2.7 và sử dụng python 2.7 trong virtualenv mới. Tôi đã thực hiện các bước sau:

Tôi đã tải xuống python 2.7 và cài đặt nó:

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

Sau đó, tôi chạy lệnh để thiết lập một virtualenv mới bằng python2.7:

mkvirtualenv --python=python2.7 mynewenv

.Bash_profile của tôi trông giống như sau:

# 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

Bây giờ khi tôi mở bảng điều khiển, tôi nhận được thông báo lỗi sau.

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.

Tôi cũng đã tìm thấy trong một bài đăng khác rằng tôi nên nâng cấp virtualenvwrapper. Điều đó đã không giúp đỡ.

sudo pip install virtualenvwrapper --upgrade

Bất kỳ trợ giúp sẽ được đánh giá cao.


4
Bạn có thấy này hoặc bạn có thể thử cách kháceasy_install
tự do ngắm cảnh

Cảm ơn tôi đã xem bài viết. Nhưng tôi không thể quản lý để cài đặt virtualenv cho python 2.7. Thông báo là virtualenv đã được cài đặt cho 2.6. Tôi đã chạy các lệnh sau: ~ TK $ mà python /Library/Frameworks/Python.framework/Versions/2.7/bin/python ~ TK $ sudo pip install virtualenv Yêu cầu đã được đáp ứng (sử dụng --upgrade để nâng cấp): virtualenv in / Library / Python / 2,6 / site-packages / virtualenv-1,6-py2.6.egg Dọn dẹp ...
Thomas Kremmel

Tôi vừa xem trạng thái của virtualenv và có vẻ như nó không hỗ trợ Py 2.7.
martineau

2
Chỉ cần một lưu ý - tôi đề cập đến vấn đề này trong một trường hợp khác. Tôi bắt đầu tạo một virtualenv qua mkvirtualenvvà sau đó dừng nó (với Ctrl+C). Khi cố gắng tạo lại virtualenv, có một số đồ ăn thừa từ lần trước. Tôi đã vào thư mục envs của mình và xóa môi trường chưa được xây dựng hoàn chỉnh. Sau đó, mkvirtualenvlệnh tương tự hoạt động bình thường.
driftcatcher

2
Nhận xét của Yibo Yang cũng được đưa ra cho cài đặt Ubuntu của tôi. Chỉ cần cẩn thận với chính tả ... ở trên sẽ được xuất VIRTUALENVWRAPPER_PYTHON = / usr / bin / python3 với "v" trong VIRTUALENVWRAPPER
Kevin

Câu trả lời:


53

Sự cố đã được giải quyết theo các bước bên dưới:

#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

Sắp xếp lại lệnh xuất theo thứ tự được đặt trước các lệnh virtualenv trong tệp .bash_profile của tôi:

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

Cài đặt lại công cụ thiết lập, cài đặt dễ dàng và PIP. Điều này rõ ràng là cần thiết để chúng hoạt động bình thường với phiên bản python mới:

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

sudo easy_install-2.7 pip

pip install virtualenv

1
Cảm ơn - sau khi nâng cấp bản cài đặt Python 2.7 của tôi trên Mac Mountain Lion, tôi đã gặp sự cố tương tự và điều này đã khắc phục được.
A. Jesse Jiryu Davis

3
Trên Mountain Lion, mẹo đối với tôi là đảm bảo PATH cho / opt / local / bin được đặt TRƯỚC dòng nguồn ... Tôi không phải gặp rắc rối với các liên kết OSX Python trong / usr / bin hoặc bất kỳ thứ gì khác. Ngoài ra WORKON_HOME hiện được đặt mặc định nếu không được đặt thành $ HOME / .virtualenvs
Đánh dấu

4
+1 cho nhận xét @Mark. Ngoài ra, đối với người dùng bia: đường dẫn thực tế là usr/local/Cellar/python/<PYTHON-VERSION>/bin/.
rsenna

Cảm ơn, nó giúp tôi sau khi tự biên dịch python 2.7.4 trong Debian.
Zulu

Trong trường hợp của tôi, sự cố chỉ xảy ra tại sao tôi cố gắng đăng nhập từ xa vào một máy khác. Gợi ý, điều này có nghĩa là vấn đề không phải ở máy cục bộ mà là ở máy bạn đang đăng nhập! Tôi nghĩ tôi sẽ đề cập đến nó trong trường hợp ai đó ở tại chỗ.
smileBot vào

23

Ngoài ra, nếu bạn có macport, hãy đảm bảo /opt/local/Library/Frameworks/Python.framework/Versions/2.7/binđược liệt kê trước /Library/Frameworks/Python.framework/Versions/2.7/bin/usr/local/bintrong PATH. Sau đó, thiết lập những điều sau trong bạn .profile:

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

4
Tôi đang cài đặt python3 cùng với hệ điều hành python2 của mình và cài đặt đã VIRTUALENVWRAPPER_PYTHONgiải quyết được sự cố của tôi.
Johan Gov

8

Trong trường hợp của tôi, thêm dòng này vào tệp .zshrc của tôi đã thực hiện thủ thuật,

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.6cho phiên bản mới nhất.
oba2311

trong bash_profile của tôi,export VIRTUALENVWRAPPER_PYTHON="which python3"
Fai Zal Đồng

8

Đối với bất kỳ ai sử dụng Ubuntu 18.04Python 3+ , đây là mẹo cho tôi:

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

4

Điều này đã xảy ra với tôi và tôi đã giải quyết nó bằng cách cài đặt lại pip. Điều gì đã xảy which pipra /usr/bin/piplà kết quả which pythonđã cho , trong khi cho /usr/local/bin/python. Con đường cho pipnên được /usr/local/bin/pip. Điều này có thể đã xảy ra khi tôi cập nhật cài đặt Python của mình.

Nếu bạn làm theo tài liệu về pip, bạn có thể dễ dàng cài đặt lại pipcho thiết lập Python đang hoạt động hiện tại của mình. Bạn cần phải:

  1. Tải xuống tập lệnh get-pip.py (được liên kết trực tiếp từ piptài liệu của ').
  2. Chạy đi python get-pip.py.

Điều này giải quyết các vấn đề đối với tôi.


3

Có một số điều có thể gây ra lỗi này. Nếu môi trường của bạn là

  • CentOS 7, python3được cài đặt từepel-release
  • pip3 được cài đặt với python3.4 get-pip.py
  • virtualenvwrapper được cài đặt với pip3
  • Môi trường ảo python được tạo bằng mkvirtualenv -p /usr/bin/python3.4

Sau đó, vì bất kỳ lý do gì, môi trường ảo được tạo ra mà không có thư viện virtualenvwrapper. Bạn có thể giải quyết nó bằng cách cài đặt lại nó một lần nữa, nhưng lần này từ bên trong virtualenv

[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

Tôi chỉ cần đảm bảo rằng / usr / local / bin / python tồn tại.

Đối với tôi nó rất đơn giản:

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

1

Tôi nhận được lỗi tương tự . Phát hiện ra rằng tôi đã có phiên bản cũ của pip. Tôi đã sửa lỗi chỉ bằng cách nâng cấp pip.


0

Tôi vừa cài đặt python 3.5, thử virtualenvwrapper và sau đó gặp sự cố này. Tôi nhận ra rằng python3.5 đã được cài đặt /usr/local/bin/python3.5và KHÔNG /usr/bin/python3.5. Vì vậy, tôi đã sửa lại tập lệnh .bash_profile của mình để trông giống như sau và mọi thứ dường như hoạt động ngay bây giờ

# 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

Tôi là một người mới làm quen để không chắc chắn rằng 'cục bộ' đó trong đường dẫn đến python3.5 sẽ ảnh hưởng đến tôi như thế nào về lâu dài nhưng, hiện tại, nó hoạt động.


0

Tôi có vấn đề này sau khi gỡ bỏ cài đặt các virtualenvwrappergói. Khi tôi đăng nhập vào bất kỳ người dùng nào (hoặc suvào một người dùng khác), tôi sẽ nhận được:

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.

Giải pháp là xóa /etc/bash_completion.d/virtualenvwrappertệp.

Biên tập:

Không xóa tệp ở trên hoặc nó sẽ không được tạo lại nếu bạn cài đặt lại virtualenvwrapper. Thay vào đó những gì bạn cần làm là purgecác virtualenvwrappergói khi bạn gỡ bỏ cài đặt nó. Như thế này trên Debian:

apt-get remove --purge virtualenvwrapper

0

Hãy thử gỡ cài đặt của bạn virtualenvvirtualenvwrappercài đặt lại bằng pipphiên bản 2.7 (tôi nghĩ vậy).

Tôi gặp phải lỗi tương tự và tôi chỉ thực hiện việc này và giải quyết vấn đề của mình.

Tôi đang sử dụng U


0

Mặc dù có một câu trả lời được chấp nhận, tôi nghĩ rằng tôi sẽ đặt những gì đã sửa nó cho tôi.

Đầu tiên, tôi đã cài đặt Python và vừa nâng cấp nó qua Homebrew . Tôi cũng đang sử dụng ZSH vì vậy nếu một số bit không hoàn toàn khớp với đầu ra của bạn thì đó có thể là lý do.

Bằng cách chạy python thông tin bia và xem qua đầu ra, tôi tìm thấy một chút thông tin thú vị sau:

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"

Vì vậy, tôi đã thêm điều này vào tập lệnh khởi động đầu cuối của mình như được hiển thị và lỗi n còn hiển thị.

Lưu ý: Tôi đã chèn phần này vào một phần khác của PATH và lỗi vẫn tiếp diễn khi khởi động.


0

Gặp sự cố tương tự sau khi cài đặt dự án Conda / Anaconda. Câu hỏi này khá hữu ích trong việc giải quyết vấn đề của tôi trên MAC. Việc giải quyết vấn đề có .zshrcphần liên quan của tôi trông như sau:

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

Điều này phụ thuộc vào nơi tôi đã cài đặt conda và bạn sẽ phải tìm ra điều đó trong trường hợp của riêng mình. Để có được các chi tiết cụ thể cho môi trường nhất định của bạn, tùy thuộc vào nơi bạn đã cài đặt anaconda, bạn có thể sử dụng như sau:

$  ~/ -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

ĐỪNG QUÊN CÀI ĐẶT VÀ CÀI ĐẶT virtualenv và virtualenvwrapper như được đánh dấu trong các câu trả lời khác.


0

Vừa mới gặp sự cố này trên Centos 7.4.

Không có câu trả lời nào ở trên phù hợp với trường hợp của tôi. Sau khi tìm hiểu kỹ, tôi đã xác định được điều này là do quyền đối với tệp quá nghiêm ngặt trong python libs (Tôi đoán việc cài đặt python trên Centos khác một chút so với các hệ thống POSIX khác).

Vì vậy, nếu mọi thứ khác không thành công, bạn có thể muốn kiểm tra xem các lib python của bạn có thể đọc được bởi người dùng mà bạn đang cố gắng chạy virtualenvwrapper cùng không.

Đặc biệt kiểm tra: /usr/lib/python3.6 /usr/lib64/python3.6 (sửa đổi đường dẫn cho các phiên bản python khác nhau).

Nếu bạn thấy điều đó groupothersthiếu quyền đọc và thực thi trong đó, hãy thêm chúng: sudo chmod og+rx -R /usr/lib/python3.6 sudo chmod og+rx -R /usr/lib64/python3.6

Lưu ý: Tôi không chắc liệu điều này có hoạt động chống lại chính sách bảo mật của Centos hay không nhưng nó có thể an toàn miễn là bạn không đưa ra writequyết định.


0

Trong tình huống của tôi (OS X 10.13.6), điều này đã làm được

brew install python2 --upgrade

0

Tôi đã gặp vấn đề tương tự như vấn đề này và đã dành rất nhiều thời gian để định cấu hình xem có gì sai. Và cuối cùng tôi đã phát hiện ra điều gì không ổn.

Đầu tiên tôi tìm nơi tồn tại thư mục virtualenvwrapper. Trong trường hợp của tôi /usr/local/lib/python3.7/site-packages. Bên trong thư mục là hook_loader.py gây ra lỗi.

Tiếp theo, tôi đã sử dụng tập lệnh python.

python3

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

Tôi không thể tìm thấy thư mục /usr/local/lib/python3.7/site-packages nên cuối cùng tôi đã viết,

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

sang tệp .bashrc. Làm xong.

Ý nghĩa của PYTHON PATH

Như bạn có thể thấy trong liên kết trên, PYTHONPATH tăng cường đường dẫn tìm kiếm mặc định cho các mô-đun.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.