How to get the current running module path/name
我已经搜索过了,这似乎是一个没有简单答案的简单问题。
我有文件
1 2 3 4 | USAGE = u'''\ Usage: python -m %s -h ''' % (what_do_i_put_here,) |
所以当我收到
我真的需要通过
谢谢。
编辑:如前所述,有答案(我已经搜索过),但不是简单的答案。要么使用
另外,这是在Python2.6中,我不能使用任何其他版本。
这为我工作。
1 | __loader__.fullname |
另外,如果我的卡车从Python的M -我的卡车得到的预期。
什么是不完全确定的属性是一_ _ _ _装载操作系统让我知道,如果这是很好的。
编辑:这是来自PEP 302:http://www.python.org /开发/系统/ PEP 0302号
摘要:从有趣的链接
The load_module() method has a few responsibilities that it must
fulfill before it runs any code:...
- It should add an __loader__ attribute to the module, set to the
loader object. This is mostly for introspection, but can be used
for importer-specific extras, for example getting data associated
with an importer.
所以它看起来像它应该工作的精细在所有情况下。
我觉得你真的在寻找
Within a module, the module’s name (as a string) is available as the value of the global variable
__name__ .
如果你直接运行的文件,这将
当运行与
来源:http:////cmdline.html # docs.python.org使用命令行
另一种选择可能是可变的
唯一的方式是与os.getcwd路径操作(),os.path,文件和whatnot,你提到的。
事实上,它可能是好的补丁的实施,目前是optparse / argparse("%)"替换字符串中使用与os.path.basename(sys.argv [ 0 ])——你是用optparse,好吗?-另一个字符串),即为特殊类模块。
为什么不能有这样的限制,国有企业的"ABC米的Python。"当然,目前的一些模块可以在拉链或任何,但我宁愿整个包装方法和简化的脚本,这使得确定的执行发生在正确的上下文,以正确的Python实例。
该包装包含的:小的CAN
1 2 | import sys __import__(sys.argv[1]) |
然后你可以用你喜欢的方法是把这个模块的名称的使用。
回到原来的要求。如果我的想法是,understood正确地运行,有一些Python文件子目录中找到的消息,这是由使用该模块,some.mega.package真的。
我认为,有没有可靠的方法来确定一个通用的,如果想运行的卡车或ABC C,没有文件系统的分析模块,以确定有无(_说,寻找所有_ init .py的_ _目录外的点,直到有没有更多的_ _ init .py,甚至_ _)它不是100%的分析。
为什么没有人提到
当你要做一
1 2 3 4 5 | Class A: self.__module__ # gets module.filename def get_module(): A.__module__ # also gets module.filename |
有一些选项,以获得当前的路径/模块的名称。
第一是熟悉使用_ _ _ _ Python中的文件,点击这里查看使用。
认为在当前加载的模块的名称。
下面的代码检查/尝试,它将工作在python2 &;python3。
1 2 3 4 5 6 7 | # module_names.py import os print (__file__) print (os.path.abspath(__file__)) print (os.path.realpath(__file__)) |
在Mac OS X的输出:
1 2 3 4 | MacBook-Pro-2:practice admin$ python module_names.py module_names.py /Users/admin/projects/Python/python-the-snake/practice/module_names.py /Users/admin/projects/Python/python-the-snake/practice/module_names.py |
在这里,我们得到了该操作系统的名称的名称和它的电流模块的绝对路径。
你应该在你的