我越来越多地使用Python,并且我一直__all__在不同的__init__.py文件中看到变量集.有人可以解释这是做什么的吗?
我已经尝试阅读有关兄弟进口甚至 包文档的问题,但我还没有找到答案.
具有以下结构:
??? LICENSE.md
??? README.md
??? api
? ??? __init__.py
? ??? api.py
? ??? api_key.py
??? examples
? ??? __init__.py
? ??? example_one.py
? ??? example_two.py
??? tests
? ??? __init__.py
? ??? test_one.py
Run Code Online (Sandbox Code Playgroud)
如何在脚本 examples和tests目录从导入
api模块,并可以从命令行运行?
此外,我想避免sys.path.insert每个文件的丑陋黑客.当然这可以在Python中完成,对吧?
题
我安装了一个名为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.