【问题标题】:Python: How do i get the name of the current archive?Python:如何获取当前存档的名称?
【发布时间】:2013-08-14 01:29:51
【问题描述】:

有没有办法在 Python 中获取当前存档名称?

类似

EggArchive.egg


---SomePythonFile.py

是否从 SomePython.py 中获取 .egg 名称?

【问题讨论】:

  • 您的意思是,您想发现发行版名称,还是完整的 egg 文件名?你有发行版名称吗?

标签: python zip egg


【解决方案1】:

变量__file__ 包含当前python 文件的路径。所以如果你有一个结构:

.
`- your.egg
   `-your_module.py

your_module.py 你有一个函数:

def func():
    print(__file__)

代码:

import sys
sys.path.append('/path/to/your.egg')
from your_module import func
func()

将打印出来:

/path/to/your.egg/your_module.py

所以基本上你可以操作__file__ 变量,如果你知道你的模块在egg 文件中的相对位置并获得egg 的完整路径。

要在egg文件中的脚本中获取egg的相对路径,您必须这样做:

def rel_to_egg(f):
    my_dir = os.path.dirname(os.path.abspath(f))
    current = my_dir
    while not current.endswith('.egg'):
        current = os.path.dirname(current)
    return os.path.relpath(current, my_dir)

现在让我们说__file__ == '/test/my.egg/some/dir/my_script.py'

>>> print(rel_to_egg(__file__))
'../..'

【讨论】:

  • 这很好...只是想知道是否可以在不使用 pkg_resources 的情况下检索此文件的相对路径...?
  • 当前文件...类似于 ..\lib\lib1\ ?
  • 我们误会了。所以让我再试一次,看看我是否理解正确。 1.你有一个library.egg,它本身有一个模块my_mod 2.在其他地方你有一个脚本my_script.py 3.在my_script.pyimport my_mod来自library.egg。 4.你想知道library.egg相对于my_script.py在哪里?
  • nop... 1. 我有一个 library.egg,它本身有一个模块 my_mod 2. 我在 .egg 中有多个模块。 3. 我还有一个带有 .egg my_script.py 的脚本 4. 在 my_script.py 中,我想从 library.egg 导入 my_mod。 5. 因此我想知道 library.egg 相对于 my_script.py 在哪里?
  • my_script.py 在鸡蛋内时如何运行?
猜你喜欢
  • 1970-01-01
  • 2015-04-10
  • 2016-11-02
  • 1970-01-01
  • 2021-08-24
  • 2018-09-15
  • 2020-04-02
  • 2017-09-09
  • 2011-05-08
相关资源
最近更新 更多