python - pip 编辑模式“未找到模块”
问题描述
我正在尝试在可编辑模式下使用使用 pip 的项目。我进行了广泛的搜索,发现有几个人遇到了这个问题(https://github.com/pypa/pip/issues/3),尽管提到的解决方案对我不起作用。
我在这里创建了一个示例项目:https ://github.com/lfoppiano/testPip ,在几个依赖项中,它与http://github.com/hirmeos/entity-fishing-client-python的问题(参见分支 newVersion )。
我用 python 3 配置了 virtualenv:
(venv3) Johan:hirmeos lfoppiano$ python --version
Python 3.6.5
如果我安装各种依赖项
(venv3) Johan:testPip lfoppiano$ pip install -r requirements.txt
Requirement already satisfied: requests==2.18.4 in /Users/lfoppiano/.virtualenvs/venv3/lib/python3.6/site-packages (from -r requirements.txt (line 1)) (2.18.4)
Requirement already satisfied: zenlog==1.1 in /Users/lfoppiano/.virtualenvs/venv3/lib/python3.6/site-packages (from -r requirements.txt (line 2)) (1.1)
Requirement already satisfied: bottle in /Users/lfoppiano/.virtualenvs/venv3/lib/python3.6/site-packages (from -r requirements.txt (line 3)) (0.12.13)
Requirement already satisfied: networkx in /Users/lfoppiano/.virtualenvs/venv3/lib/python3.6/site-packages (from -r requirements.txt (line 4)) (2.1)
Requirement already satisfied: beautifulsoup4 in /Users/lfoppiano/.virtualenvs/venv3/lib/python3.6/site-packages (from -r requirements.txt (line 5)) (4.6.0)
Collecting entity-fishing-client>=0.3.0 (from -r requirements.txt (line 6))
Requirement already satisfied: urllib3<1.23,>=1.21.1 in /Users/lfoppiano/.virtualenvs/venv3/lib/python3.6/site-packages (from requests==2.18.4->-r requirements.txt (line 1)) (1.22)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /Users/lfoppiano/.virtualenvs/venv3/lib/python3.6/site-packages (from requests==2.18.4->-r requirements.txt (line 1)) (3.0.4)
Requirement already satisfied: idna<2.7,>=2.5 in /Users/lfoppiano/.virtualenvs/venv3/lib/python3.6/site-packages (from requests==2.18.4->-r requirements.txt (line 1)) (2.6)
Requirement already satisfied: certifi>=2017.4.17 in /Users/lfoppiano/.virtualenvs/venv3/lib/python3.6/site-packages (from requests==2.18.4->-r requirements.txt (line 1)) (2018.1.18)
Requirement already satisfied: colorlog in /Users/lfoppiano/.virtualenvs/venv3/lib/python3.6/site-packages (from zenlog==1.1->-r requirements.txt (line 2)) (2.10.0)
Requirement already satisfied: decorator>=4.1.0 in /Users/lfoppiano/.virtualenvs/venv3/lib/python3.6/site-packages (from networkx->-r requirements.txt (line 4)) (4.2.1)
Installing collected packages: entity-fishing-client
Successfully installed entity-fishing-client-0.4.0
(venv3) Johan:testPip lfoppiano$
一切正常:
(venv3) Johan:testPip lfoppiano$ python RootPage.py 8080
Bottle v0.12.13 server starting up (using WSGIRefServer())...
Listening on http://0.0.0.0:8080/
Hit Ctrl-C to quit.
但是,如果我
在可编辑模式下通过 pip安装依赖项 entity-fishing-client newVersion branch
,:https://github.com/hirmeos/entity-fishing-client-python/tree/newVersion :
(venv3) Johan:hirmeos lfoppiano$ git clone git@github.com:hirmeos/entity-fishing-client-python.git testDependency
Cloning into 'testDependency'...
remote: Counting objects: 182, done.
remote: Total 182 (delta 0), reused 0 (delta 0), pack-reused 182
Receiving objects: 100% (182/182), 31.71 KiB | 328.00 KiB/s, done.
Resolving deltas: 100% (83/83), done.
(venv3) Johan:hirmeos lfoppiano$ git checkout newVersion
(venv3) Johan:hirmeos lfoppiano$ cd testDependency/
(venv3) Johan:testDependency lfoppiano$ git checkout newVersion
Branch 'newVersion' set up to track remote branch 'newVersion' from 'origin'.
Switched to a new branch 'newVersion'
(venv3) Johan:testDependency lfoppiano$ cd ..
(venv3) Johan:hirmeos lfoppiano$ cd testPip/
(venv3) Johan:testPip lfoppiano$ pip install -e ../testDependency/
Obtaining file:///Users/lfoppiano/development/inria/projects/hirmeos/testDependency
Requirement already satisfied: requests in /Users/lfoppiano/.virtualenvs/venv3/lib/python3.6/site-packages (from entity-fishing-client==0.4.0) (2.18.4)
Requirement already satisfied: zenlog in /Users/lfoppiano/.virtualenvs/venv3/lib/python3.6/site-packages (from entity-fishing-client==0.4.0) (1.1)
Requirement already satisfied: urllib3<1.23,>=1.21.1 in /Users/lfoppiano/.virtualenvs/venv3/lib/python3.6/site-packages (from requests->entity-fishing-client==0.4.0) (1.22)
Requirement already satisfied: idna<2.7,>=2.5 in /Users/lfoppiano/.virtualenvs/venv3/lib/python3.6/site-packages (from requests->entity-fishing-client==0.4.0) (2.6)
Requirement already satisfied: certifi>=2017.4.17 in /Users/lfoppiano/.virtualenvs/venv3/lib/python3.6/site-packages (from requests->entity-fishing-client==0.4.0) (2018.1.18)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /Users/lfoppiano/.virtualenvs/venv3/lib/python3.6/site-packages (from requests->entity-fishing-client==0.4.0) (3.0.4)
Requirement already satisfied: colorlog in /Users/lfoppiano/.virtualenvs/venv3/lib/python3.6/site-packages (from zenlog->entity-fishing-client==0.4.0) (2.10.0)
Installing collected packages: entity-fishing-client
Running setup.py develop for entity-fishing-client
Successfully installed entity-fishing-client
(venv3) Johan:testPip lfoppiano$
当我运行它时,我收到错误:
(venv3) Johan:testPip lfoppiano$ python RootPage.py
Traceback (most recent call last):
File "RootPage.py", line 9, in <module>
from nerd.nerd import NerdClient
ModuleNotFoundError: No module named 'nerd'
先感谢您
解决方案
您将无法在开发模式下安装和使用entity-fishing-client
,因为在开发模式下setuptools
无法处理包名称映射package_dir
;这是一个老问题。每次需要应用更改时不要使用开发模式并手动重新安装:pip uninstall -y entity-fishing-client && pip install testDependency/
或将包根目录重命名为nerd
并调整安装脚本:
$ pip uninstall -y entity-fishing-client
$ rm -rf testDependency/entity_fishing_client.egg_info
$ mv testDependency/entity-fishing_client testDependency/nerd
$ sed -i '/package_dir=/d' testDependency/setup.py
$ pip install --editable testDependency/
$ python -c "from nerd.nerd import NerdClient; print('ok')"
ok
推荐阅读
- css - 有没有办法删除这个自定义字体的字体粗细?
- python - 使用 ruamel.yaml 在 yaml 文件的第一行添加了不希望的缩进和破折号
- r - 根据名称数据库通过名称的部分匹配和重命名来汇总行
- python - 双摆RK4
- python - 这两个返回语句有什么区别
- mongodb - spring data mongo upsert 嵌入对象数组和主文档
- apache - Tomcat 集群设置中的身份验证和会话复制
- numpy - 分布乘以不同形状的矩阵,然后在 numpy 中将它们相加
- python - 如何使用python从谷歌云存储下载文件
- nginx - 根目录下的NGINX目录文件,这种行为正常吗?