2013-08-21 2 views
2

У меня есть кросс-платформенный интерфейс GUI для PyInstaller. Я хочу проверить установленную версию PyInstaller. Пользователь предоставляет папку установки PyInstaller. Я могу сделать это через командную строку python pyinstaller --version, но это открывает командную строку в Windows, которую я хочу избежать. Есть ли способ получить доступ к функции get_version() в модуле Python не в том же пути, что и запущенное приложение? В качестве альтернативы, как предотвратить запуск командной строки в Windows при сохранении межплатформенной совместимости моего приложения.импортировать модуль python из указанного пользователем каталога?

Вот мой код до сих пор:

def pyversion(installdir): 
    flags=[] 
    flags.append(sys.executable) 
    pylocation = os.path.join(installdir, 'pyinstaller.py') 
    flags.append(pylocation) 
    flags.append('--version') 
    p = subprocess.Popen(flags, 
         stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 
    out,err = p.communicate() 
    return float(out.strip()[:3]) 
+1

Если GUI запускается одним и тем же питоном, на котором установлен «pyinstaller», а затем вы можете просто «из Pyinstaller импортировать get_version; version = get_version() '. Или измените 'sys.path' для импорта из вашего каталога, предполагая, что версии совместимы – jfs

ответ

2
my_path = "some/path/blah" 
os.path.insert(0,my_path) 
import my_custom_module 

вам просто нужно, чтобы добавить его в путь, прежде чем импортировать его ... или, может быть, я не понимаю, о чем вы спрашиваете

+2

, вы могли бы означать' sys.path.insert (0, my_path) '(и впоследствии утверждать, что модуль импортирован с этого пути (проверьте' .__ file__' или аналогичный)) – jfs

+0

Вы правы. :) недосмотр с моей стороны –

+0

os.path.append не существует. sys.path.insert работал! Спасибо. – pedram

Смежные вопросы