【问题标题】:Run python script as if it were located somewhere else运行 python 脚本,就好像它位于其他地方一样
【发布时间】:2013-10-09 22:10:17
【问题描述】:

是否可以从一个位置运行 python 脚本,但让脚本像位于其他地方一样执行(因此导入等都按预期工作)。

我的情况是这样的:

  • 应用位于/opt/foo/bin下,应用主入口为foo.py
  • /opt/foo 下有一堆包/模块,foo.py 然后导入
  • 我们以cd /opt/foo/bin && python foo.py 运行应用程序

我希望能够将foo.py 复制/tmp 并使用cd /tmp && python foo.py 运行它。我希望它能够像生活在/opt/foo/bin 下的foo.py 一样执行。如果需要,我可以修改/tmp 下的foo.py

希望这对某人有意义。修改/opt/foo/bin 下的foo.py 不是一种选择。一种可能是在/tmp 下创建一个文件夹,即/tmp/foo 并符号链接除foo.py 之外的所有内容 - 但我希望有一种更简单的方法来完成我想要的!

【问题讨论】:

    标签: python import module path


    【解决方案1】:

    这里是a description of how Python searches for modules when you import them。解决问题的一种方法是将目录 /opt/foo/bin 添加到 PYTHONPATH。您还可以修改 foo.py 中的路径以找到模块,例如

     import sys
     sys.path.append('/opt/foo/bin')
     import foo
    

    【讨论】:

    • 此解决方案适用于简单的情况,但不适用于我们的应用程序,因为我们的应用程序正在根据脚本的位置自行调整 sys.path。
    猜你喜欢
    • 2021-06-27
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多