7

我正在尝试以“可编辑”(-e)模式从我的 github 安装一个包,以便能够在使用它的同时轻松地在存储库上工作。

但是它会导致问题,因为在我安装它之后它在 python 路径中不可用。

创建并激活一个全新的、干净的 virtualenv “发布者”,我运行以下命令:

pip install -e git+https://github.com/roberts81/easy-thumbnails.git#egg=easy_thumbnails
Obtaining easy-thumbnails from git+https://github.com/roberts81/easy-thumbnails.git#egg=easy_thumbnails
  Cloning https://github.com/roberts81/easy-thumbnails.git to /Users/ben/Envs/publisher/src/easy-thumbnails
  Running setup.py egg_info for package easy-thumbnails

    no previously-included directories found matching 'docs/_build'
Installing collected packages: easy-thumbnails
  Running setup.py develop for easy-thumbnails

    no previously-included directories found matching 'docs/_build'
    Creating /Users/ben/Envs/publisher/lib/python2.7/site-packages/easy-thumbnails.egg-link (link to .)
    Adding easy-thumbnails 1.2 to easy-install.pth file

    Installed /Users/ben/Envs/publisher/src/easy-thumbnails
Successfully installed easy-thumbnails
Cleaning up...

然后,如果我运行 python(仍在我的 virtualenv 中)并尝试从该包中导入任何内容,它会失败。

Python 2.7.2 (default, Jun 20 2012, 16:23:33) 
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import easy_thumbnails
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named easy_thumbnails
>>> 

如果我在没有 -e 选项的情况下安装它,那么一切正常。我得到了与其他 repo 相同的效果(即安装它们后它们不在 python 路径上),例如pip install -e git+http://github.com/django/django.git@stable/1.5.x#egg=django. 那么给了什么?

我注意到的一件事是它似乎并没有真正更新 easy-install.pth 文件,即使它说它是......这里发生了一些奇怪的事情。

但是,如果我使用 sudo 运行它(pip install... 命令),它就可以工作!我也可以全局安装包(在 virtualenv 之外,当然使用 sudo)并且可以。

版本:

pip==1.2.1 virtualenv==1.8.4 virtualenvwrapper==3.6 python==2.7.2 Mac OSX 10.8.2

4

4 回答 4

2

使用 pip 1.2.1 和 virtualenv 1.8.4 为我工作:

$ virtualenv -p python2.7 venv
Running virtualenv with interpreter /usr/local/bin/python2.7
New python executable in venv/bin/python
Installing setuptools............done.
Installing pip...............done.

$ source venv/bin/activate

$ pip install -e git+https://github.com/roberts81/easy-thumbnails.git#egg=easy_thumbnails
Obtaining easy-thumbnails from git+https://github.com/roberts81/easy-thumbnails.git#egg=easy_thumbnails
  Cloning https://github.com/roberts81/easy-thumbnails.git to ./venv/src/easy-thumbnails
  Running setup.py egg_info for package easy-thumbnails

    no previously-included directories found matching 'docs/_build'
Installing collected packages: easy-thumbnails
  Running setup.py develop for easy-thumbnails

    no previously-included directories found matching 'docs/_build'
    Creating /Users/jterrace/test/venv/lib/python2.7/site-packages/easy-thumbnails.egg-link (link to .)
    Adding easy-thumbnails 1.2 to easy-install.pth file

    Installed /Users/jterrace/test/venv/src/easy-thumbnails
Successfully installed easy-thumbnails
Cleaning up...

$ python
Python 2.7.3 (default, Nov 12 2012, 09:50:25) 
[GCC 4.2.1 Compatible Apple Clang 4.1 ((tags/Apple/clang-421.11.66))] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import easy_thumbnails
>>> easy_thumbnails.VERSION
'1.2'
于 2013-02-24T03:32:57.520 回答
2

现在这似乎很愚蠢,因为问题已经得到解答,这解决了一个不同的问题——但是当我遇到这个错误时,这就是我的解决方案。(我希望这对其他人有帮助)

确保您有一个__init__.py文件。结构应如下所示:

/myprojectname
  /myprojectname
    __init__.py
    mymodule.py
  setup.py

然后pip install -e .从顶级myprojectname文件夹中运行“”,一切正常。我忘记了__init__.py我的情况,忘记了这是该消息的可能原因。

于 2014-02-23T01:58:37.343 回答
1

我有一个类似的问题,并通过删除我的 virtualenv、重新创建它、激活它,然后(在做任何其他事情之前)更新环境中的 pip 和 setuptools 来解决它。首先打开一个新的终端窗口(以确保未激活虚拟环境)并导航到您的虚拟环境所在的目录。然后做:

rm -rf env
virtualenv env
. env/bin/activate
pip install -U pip setuptools

在此之后,我能够从 GitHub 安装包(使用pip),并能够将其导入 python。

于 2016-07-15T20:45:43.603 回答
0

虽然它解决了一个不同的问题,但遵循这个 Mac OSX 10.8 特定线程的结论似乎为我解决了这个问题。

具体来说,我安装了不使用 pip 的分发:

$ curl -O http://python-distribute.org/distribute_setup.py
$ python distribute_setup.py

然后我添加export VIRTUALENV_DISTRIBUTE=1到我的 ~/.bashrc 文件并重新启动我的终端。

为了安全起见,我卸载并重新安装了 virtualenv 和 virtualenvwrapper。

然后我销毁了旧的虚拟环境并重新创建了它们。无论出于何种原因,修复 virtualenv 以使用和安装分发解决了问题。古怪。

于 2013-02-24T04:45:29.437 回答