获取python控制台脚本的运行路径

时间:2012-12-04 18:14:16

标签: python runtime setup.py

缺少它 - 我需要获得一个console_script来返回它当前的运行路径,以便我可以覆盖它在运行时使用的模块。

这是我的基本设置(尽可能总结):

    package_1:
      caller_module.py

    console_script_module:
      main.py
      dir_of_modules_to_use/
        a.py
        b.py
        c.py
      setup.py

    setup.py contents:
      setup(
        entry_points = {
          'console_scripts': [
            'console-script-module = console_script_module.main:main'
           ]
         }
        )         

更长的细节: 所以 caller_module.py 通过发出子进程调用来调用 console-script-module 。反过来,运行 dir_of_modules_to_use 中的模块。我希望通过在单独的脚本发生之前覆盖它们来提供我自己的这些模块版本。为了做到这一点,我需要知道 console-script-module 安装位置的运行路径,因为它不一致(例如virtualenv中的更改)。

我尝试将其添加到 main.py 并使用单独的命令行参数来调用它:

    def print_absoulute_dir():    
      print os.path.abspath('dir_of_modules_to_use')

不幸的是,这只会返回我调用控制台脚本的路径。



免责声明 - 我知道这很糟糕,很糟糕,它来自我继承的代码,我只需要在短期内工作。遗憾的是,此时无法更改 caller_module.py 中的代码,否则我只会更改调用 console_script_module:main.py 的方式。

1 个答案:

答案 0 :(得分:0)

我不确定我是否真的理解你想要的东西,但每个python模块都有__file__ 属性,包含其在文件系统中的位置, 并且您可以使用sys.path修改python模块搜索路径

import urllib
import sys

print urllib.__file__
print sys.path