gpt4 book ai didi

python - 我的 Python 目录组织是否不正确?

转载 作者:太空宇宙 更新时间:2023-11-03 17:54:57 25 4
gpt4 key购买 nike

我正在尝试用 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 中你应该有:

setup(
...
scripts = ['bin/run_my_app']
...
)

bin/run_my_app 然后是一个包含内容的脚本:

#!/usr/bin/env python

from app.main import main
main()

现在,当您运行 python setup.pydeveloppython setup.py install 时,setuptools/distribute 会将命令行脚本 run_my_app 安装到您的路径中。 python setup.pydevelop 使得每次更改源代码后都可以不需要重新安装软件包到 virtualenv ;仅当对 setup.py 本身或包中任何可能的 C 语言扩展模块进行更改后,您才需要重新运行 setup.pydevelopment

或者使用

运行主模块
python -m app.main

特别是不要尝试使用python app/main从包运行应用程序,因为它从来不应该像这样工作那个。

<小时/>

为了开发代码,您需要一个 virtualenv,然后您可以使用 python setup.pydevelop 将代码链接到 virtualenv 中;一个特殊的链接被安装到 site-packages 中,指向您的应用程序的源代码,因此您可以就地开发它,但它的行为就像安装到 site-包

关于python - 我的 Python 目录组织是否不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28614269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com