0

缺少它 - 我需要一个 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通过发出子进程调用来调用控制台脚本模块。依次运行dir_of_modules_to_use中看到的模块。我想通过单独的脚本在发生这种情况之前通过覆盖它们来提供我自己的这些模块版本。为了做到这一点,我需要知道控制台脚本模块安装位置的运行路径,因为它不一致(例如,virtualenv 的变化)。

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

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

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



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

4

1 回答 1

0

我不确定我是否真的明白你想要什么,但每个 python 模块都有__file__ 属性,它包含它在文件系统中的位置,你可以使用 sys.path 来修改 python 模块搜索路径

import urllib
import sys

print urllib.__file__
print sys.path
于 2012-12-04T19:55:30.370 回答