我正在尝试用Python创建一个独立的应用程序,但是有一些与导入和项目目录结构相关的问题我不知道如何解决。你知道吗
项目结构如下:
root/
app/
__init__.py
main.py
foo.py
tests/
__init__.py
main_tests.py
foo_tests.py
我不知道如何解决这两个相互矛盾的要求:
测试是使用Nose框架编写的。当我从root
目录运行nosetests
时,它要求所有导入都与app
包相关。你知道吗
# app/main.py
import app.foo # `import foo` will not work
另一方面,如果我想从root
运行应用程序(使用类似python app/main.py
的命令),则会出现另一个问题。它会正确地抱怨找不到app
包。
如何解决这些问题?我组织项目的方式有什么需要改变的吗?你知道吗
您应该有一个
setup.py
;在setup.py
中您应该有:然后是一个包含内容的脚本:
现在,当您运行
python setup.py develop
或python setup.py install
时,setuptools
/distribute
将命令行脚本run_my_app
安装到您的路径中。python setup.py develop
使得在每次更改源代码后,无需将包重新安装到virtualenv;只有在更改setup.py
本身或包中任何可能的C语言扩展模块后,才需要重新运行setup.py develop
。你知道吗或者用
尤其是不要试着在包中运行一个应用程序,因为它从来就不应该这样工作。你知道吗
为了开发代码,您需要一个virtualenv,然后您可以使用
python setup.py develop
将代码链接到virtualenv;一个特殊的链接被安装到site-packages
中,该链接指向您的应用程序的源代码,因此您可以就地开发它,但是它的行为就像它被安装到site-packages
中一样。你知道吗相关问题 更多 >
编程相关推荐