Если Ваша компания не довольна лицензией LGPL, Вы могли бы хотеть проверить Прогресс Звуковой ESB, или ArtixDS (недавно полученный), TIBCO ActiveWhatever или Oracle/BEA Aqualogic. Возможности - Вы, уже используют что-то от этих компаний, и можно получить достойную скидку.
os.chdir позволяет вам изменить рабочий каталог по вашему желанию (вы можете извлечь рабочий каталог cfg_path
с помощью os.path.dirname
); обязательно сначала получите текущий каталог с помощью os.getcwd , если вы хотите восстановить его, когда закончите выполнение cfg_path
.
Python 3 действительно удаляет ] execfile
(в пользу последовательности, в которой вы читаете файл, компилируете
содержимое, затем exec
их), но вам не нужно беспокоиться об этом, если вы в настоящее время кодируется на Python 2.6, поскольку источник 2to3 для перевода исходного кода справляется со всем этим плавно и без проблем.
Изменить : OP говорит в комментарии, тот execfile
запускает отдельный процесс и не учитывает текущий рабочий каталог. Это неверно, и вот пример, показывающий, что это так:
import os
def makeascript(where):
f = open(where, 'w')
f.write('import os\nprint "Dir in file:", os.getcwd()\n')
f.close()
def main():
where = '/tmp/bah.py'
makeascript(where)
execfile(where)
os.chdir('/tmp')
execfile(where)
if __name__ == '__main__':
main()
Запуск этого на моей машине дает такой результат, как:
Dir in file: /Users/aleax/stko
Dir in file: /private/tmp
ясно показывает, что execfile
действительно продолжает использовать установленный рабочий каталог во время выполнения execfile
. (Если исполняемый файл изменяет рабочий каталог, это отразится после возврата execfile
- именно потому, что все происходит в одном процессе!)
Итак, что угодно проблемы, которые все еще наблюдает OP, не привязаны к текущему рабочему каталогу (трудно диагностировать, чем они могут быть на самом деле, не видя кода и точных деталей наблюдаемых проблем; -).
s пример, показывающий, что это:import os
def makeascript(where):
f = open(where, 'w')
f.write('import os\nprint "Dir in file:", os.getcwd()\n')
f.close()
def main():
where = '/tmp/bah.py'
makeascript(where)
execfile(where)
os.chdir('/tmp')
execfile(where)
if __name__ == '__main__':
main()
Запуск этого на моей машине дает такой результат:
Dir in file: /Users/aleax/stko
Dir in file: /private/tmp
ясно показывает, что execfile
действительно продолжает использовать рабочий каталог, установленный в то время execfile
выполняется. (Если исполняемый файл изменяет рабочий каталог, это отразится после возврата execfile
- именно потому, что все происходит в одном процессе!)
Итак, что угодно проблемы, которые все еще наблюдает OP, не привязаны к текущему рабочему каталогу (трудно диагностировать, чем они могут быть на самом деле, не видя кода и точных деталей наблюдаемых проблем; -).
s пример, показывающий, что это:import os
def makeascript(where):
f = open(where, 'w')
f.write('import os\nprint "Dir in file:", os.getcwd()\n')
f.close()
def main():
where = '/tmp/bah.py'
makeascript(where)
execfile(where)
os.chdir('/tmp')
execfile(where)
if __name__ == '__main__':
main()
Запуск этого на моей машине дает такой результат:
Dir in file: /Users/aleax/stko
Dir in file: /private/tmp
ясно показывает, что execfile
действительно продолжает использовать рабочий каталог, установленный в то время execfile
выполняется. (Если исполняемый файл изменяет рабочий каталог, это отразится после возврата execfile
- именно потому, что все происходит в одном процессе!)
Итак, что угодно проблемы, которые все еще наблюдает OP, не привязаны к текущему рабочему каталогу (трудно диагностировать, чем они могут быть на самом деле, не видя кода и точных деталей наблюдаемых проблем; -).
Dir in file: /Users/aleax/stko
Dir in file: /private/tmp
ясно показывает, что execfile
продолжает использовать рабочий каталог, установленный во время выполнения execfile
. (Если исполняемый файл изменяет рабочий каталог, это отразится после возврата execfile
- именно потому, что все происходит в одном процессе!)
Итак, что угодно проблемы, которые OP все еще наблюдает, не привязаны к текущему рабочему каталогу (трудно диагностировать, что они могут быть на самом деле, не видя кода и точных деталей наблюдаемых проблем; -).
Dir in file: /Users/aleax/stko
Dir in file: /private/tmp
ясно показывает, что execfile
продолжает использовать рабочий каталог, установленный во время выполнения execfile
. (Если исполняемый файл изменяет рабочий каталог, это отразится после возврата execfile
- именно потому, что все происходит в одном процессе!)
Итак, что угодно проблемы, которые все еще наблюдает OP, не привязаны к текущему рабочему каталогу (трудно диагностировать, чем они могут быть на самом деле, не видя кода и точных деталей наблюдаемых проблем; -).