使Python程序在任何地方都可以运行

使Python程序在任何地方都可以运行,python,module,python-import,Python,Module,Python Import,我写了一个小python,我再一次在努力制作一个好的结构 几天前,我阅读了A和许多其他网站,它们建议不要从A导入b导入,并建议始终使用导入A.b“项目绝对”路径(从项目根到我要导入的内容的整个路径)导入。作为背景 我加入了一个\uuuu main\uuuuu.py,这样我就可以用python-m运行我的程序,这是在数百个python导入问题中关于stackoverflow的另一个建议。它应该有助于用相同的导入结构保持代码的可运行性和可测试性,这在我的另一个项目中是一个问题 现在我想要的是,在我的

我写了一个小python,我再一次在努力制作一个好的结构

几天前,我阅读了A和许多其他网站,它们建议不要从A导入
b
导入,并建议始终使用
导入A.b
“项目绝对”路径(从项目根到我要导入的内容的整个路径)导入。作为背景

我加入了一个
\uuuu main\uuuuu.py
,这样我就可以用
python-m
运行我的程序,这是在数百个python导入问题中关于stackoverflow的另一个建议。它应该有助于用相同的导入结构保持代码的可运行性和可测试性,这在我的另一个项目中是一个问题

现在我想要的是,在我的系统中的任何地方,我都可以运行
python-m
,而不仅仅是从
RSTCitations
目录上的一个目录

如果没有:

  • python路径操作(这是一种肮脏的黑客行为)
  • 以某种方式更改导入并获得不推荐的导入结构
  • 对我的代码执行其他黑暗魔法
我希望在组织代码时坚持最佳实践,但仍然希望它在终端的任何位置都可以运行

失败的例子 当我从与我的程序完全无关的另一个目录运行程序时,例如,我得到以下错误:

/home/user/development/anaconda3/bin/python: No module named /home/user/development/rst-citations-to-raw-latex/RSTCitations
然而,这条道路是正确的。这正是代码所在的位置。

您可以:

  • 使用pip安装程序(请参阅)
  • 将模块放入python导入路径(和/或在环境中为需要使用它的用户编辑python路径)

如果您不需要其他用户“导入”您的库,而只是将其作为一个独立程序使用,您也可以将一个符号链接/脚本添加到您的程序中,使其可以从您路径中的目录运行。

从导入b中导入
没有什么问题(事实上,您引用的博客并不建议反对它).你试过用pip安装你的软件包吗?@AlexGarcia没有。我不希望用户必须安装任何东西(也许将来我会上传到那里,虽然我从来没有这样做过,也不知道如何去做以及需要什么步骤),只要能从任何地方运行我的程序。@AndrewJaffe你是对的,似乎我混淆了网站。不过,我在某个地方读到,应该始终使用
import…
很抱歉,我再也找不到它了:(@Zelphir您可以使用pip安装一个“本地”包(请看这里:)你能帮我介绍一下符号链接的想法吗?你的意思是我应该创建一个符号链接到一个脚本,该脚本运行我的程序,并且位于我现在必须从中调用我的程序的目录中?