我写了一个小python program我再次努力制作一个好的结构。
几天前我读了一个blog和许多其他建议反对 from a import b
的网站导入并建议始终使用 import a.b
“项目绝对”路径(从项目根目录到我要导入的整个路径)导入。那是背景。
我包括了一个 __main__.py
这样我就可以用 python -m <directory>
运行我的程序,这是另一个关于 stackoverflow 的人在数百个 python 导入问题中的另一个建议。它应该有助于使用相同的导入结构保持代码可运行和可测试,这在我的另一个项目中是个问题。
现在我想要的是,我可以从我系统的任何地方运行 python -m <dir of my code>
而不仅仅是从一个目录向上 RSTCitations
目录。
如果没有:我怎样才能实现这一点
- python 路径操作(这是一个肮脏的 hack)
- 以某种方式更改我的导入并获得不推荐的导入结构
- 对我的代码施展其他黑魔法
我想坚持组织我的代码的最佳实践,但仍然希望它可以从我在终端中的任何位置运行。
失败示例
当我按照与我的程序完全无关的另一个目录运行该程序时,我得到例如以下错误:
/home/user/development/anaconda3/bin/python: No module named /home/user/development/rst-citations-to-raw-latex/RSTCitations
但是路径是是正确的。这正是代码所在的位置。
最佳答案
你可以:
- 使用 pip 安装您的程序(参见 Installing Python packages from local file system folder with pip)
- 将您的模块放入 python 导入路径(和/或在环境中为需要使用它的用户编辑 PYTHONPATH)
如果您不需要其他用户“导入”您的库,而只是将其作为独立程序使用,您也可以将符号链接(symbolic link)/脚本放入您的程序,使其可以从您的 PATH 中的目录运行.
关于python - 使 Python 程序可以从任何地方运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40806901/