Ali*_*lik 8 python packaging directory-structure project-structure
我开发了python应用程序,我决定将其转换为easy_install或pip稍后安装的软件包.我已经使用搜索找到了几个关于python包的目录结构的好资料.请参阅此答案或本文.
我创建了以下结构(我在列表中省略了几个文件以使结构更清晰)
Project/ |-- bin/ |-- my_package/ | |-- test/ | | |-- __init__.py | | |-- test_server.py | |-- __init__.py | |-- server.py | |-- util.py |-- doc/ | |-- index.rst |-- README.txt |-- LICENSE.txt |-- setup.py
之后我创建了可执行脚本 server-run
#!/usr/bin/env python from my_package import server server.main()
我放入bin目录.如果我安装我的包python setup.py install或通过pip/easy_install一切正常,我可以运行server-run,我的服务器开始处理传入的请求.
但我的问题是如何测试server-run在开发环境中工作(没有事先安装my_package)?此外,我想使用此脚本运行最新的服务器代码以用于开发目的.
开发发生在Project目录中,所以ImportError如果我运行我会得到./bin/server-run
user@host:~/dev/Project/$ ./bin/server-run
Traceback (most recent call last):
File "./bin/server-run", line 2, in
import my_package
ImportError: No module named my_package
是否有可能修改bin/server-run脚本,以便它可以工作,如果我从文件系统中某处的另一个文件夹(不一定是从Projectdir)运行它?另请注意,我想使用(如果可以实现)相同的脚本来在生产环境中运行服务器.
你需要相对进口.尝试
from .. import mypackage
Run Code Online (Sandbox Code Playgroud)
要么
from ..mypackage import server
Run Code Online (Sandbox Code Playgroud)
文档在这里
http://docs.python.org/tutorial/modules.html#intra-package-references
这些适用于Python 2.5或更高版本.
要仅在开发版本中执行此操作,请尝试:
try:
from my_package import server
except ImportError:
from ..my_package import server
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3103 次 |
| 最近记录: |