exp*_*xpz 15 python pip python-import
题
我安装了一个名为credentialsusing 的本地包
pip install -e c:\users\worker\src\clockwork\lib\credentials
Run Code Online (Sandbox Code Playgroud)
但是当我尝试从兄弟目录导入包时,它会因ImporError而失败:
cd c:\users\worker\src\clockwork\bank
python -c "import credentials"
...
ImportError: No module named 'credentials'
Run Code Online (Sandbox Code Playgroud)
令人困惑的是,credentials当我运行时,包被列为已成功安装,如下所示pip list:
...
credentials (1.0.0, c:\users\worker\src\clockwork\lib\credentials)
...
Run Code Online (Sandbox Code Playgroud)
如何安装本地软件包以便可以导入?
背景
我使用的是Python 3.4(32位).该软件包包含两个文件:
credentials\__init__.py
credentials\setup.py
Run Code Online (Sandbox Code Playgroud)
该__init__.py文件定义了一个函数.该setup.py文件是短暂的:
from distutils.core import setup
setup(name='credentials', version='1.0.0')
Run Code Online (Sandbox Code Playgroud)
解决方法
我目前将包含package(c:\users\worker\src\clockwork\lib)的目录添加到我的PATH变量中作为变通方法.但我的问题是如何正确安装包,这样我就不需要修改了PATH.
Mr_*_*s_D 15
卸载python包,然后使用以下命令安装它:
python -m pip install -e c:\users\worker\src\clockwork\lib\credentials
Run Code Online (Sandbox Code Playgroud)
可能发生的事情是你有多个python安装,并且当你尝试使用另一个安装时,pip从一个安装运行.也可以看看:
exp*_*xpz 12
问题集中在setup.py.它需要声明一个包:
from distutils.core import setup
setup(name='credentials', version='1.0.0', packages=['credentials'])
Run Code Online (Sandbox Code Playgroud)
但是这setup.py必须在credentials包的父目录中,所以最后,目录结构是:
...\credentials\setup.py
...\credentials\credentials\__init__.py
Run Code Online (Sandbox Code Playgroud)
通过此更改,在重新安装软件包后找到该模块.
这也可能是由两个Python安装引起的(但不是我的情况),而@Mr_and_Mrs_D给出了这种情况的答案.
| 归档时间: |
|
| 查看次数: |
26326 次 |
| 最近记录: |