python - 使 Python 程序可以从任何地方运行

标签 python module python-import

我写了一个小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

但是路径是正确的。这正是代码所在的位置。

最佳答案

你可以:

如果您不需要其他用户“导入”您的库,而只是将其作为独立程序使用,您也可以将符号链接(symbolic link)/脚本放入您的程序,使其可以从您的 PATH 中的目录运行.

关于python - 使 Python 程序可以从任何地方运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40806901/

相关文章:

python - 确定 Python 是否在 virtualenv 中运行

import - 多个文件中的相同模块名称

python - Python 中的文件/模块结构

python - 如何透明地重定向 Python 导入?

python - 数据框到自定义字典,反之亦然

Python 实例变量显然共享数据

python - 如何在 tweepy 上搜索一条推文中的多个单词?

javascript - Typescript 2 — 使用 ES6 导入和要求?

python - 如何将 CSV 文件中的所有数据导入 GUI

Python 项目结构和相关导入