2013-08-12 2 views
0

Есть ли способ получить имя текущего архива в Python?Python: Как получить имя текущего архива?

Что-то вроде

EggArchive.egg

Lib
---SomePythonFile.py

От SomePython.py, есть в любом случае, чтобы принести имя .egg?

+0

Вы имеете в виду, вы хотите узнать имя дистрибутива или полное имя файла яйца? У вас есть имя * распространения * спереди? –

+0

имя дистрибутива ... –

ответ

0

Переменная __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 

Итак, в основном вы можете m анимируйте переменную __file__, если вы знаете, где относительно ваш модуль находится внутри файла 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__)) 
'../..' 
+0

это хорошо ... просто интересно, можно ли получить относительный путь к этому файлу ... без использования pkg_resources? –

+0

Относительно чего? –

+0

текущий файл ... что-то вроде .. \ lib \ lib1 \ <файлов в этой папке>? –