2012-03-20 2 views
3

У меня есть код внутри myapplication, который ищет некоторые файлы в каталогах myapplications. Я работаю с AptanaStudio, и я вижу, что мой код работает нормально, но когда я создаю пакет debian, и я устанавливаю его на другой компьютер, поиск не увенчался успехом, потому что sys.path выглядит как другой список.dist-packages и sys.path

От выполнения Aptana sys.path включает в себя путь к исполняемому каталогу (/ mysvncopy/myapplication), и я считаю, что мой код находит файлы таким образом.

установка приложения оставить эти файлы в /USR/доли/pyshared/MyApplication, и я думал, что этот каталог автоматически доступны касаемо /usr/local/lib/python2.6/dist-packages в SYS .path, но что-то не так, /usr/local/lib/python2.6/dist-packages IS в sys.path, конечно, но приложение не найти что-нибудь в /USR/доли/pyshared/myapplication.

Как я могу заверить, что приложение известно для поиска внутри /usr/share/pyshared/myapplication и эквивалент внутри windows и mac ?.

Если бы я включил в мой код:

<sys.path.append('/usr/share/pyshared/myapplication') 

поиск будет успешным, но этот код С.О. зависимый.

Могу вставить setup.py при необходимости.

Благодаря

+0

мне еще раз, неправильно ли задавать вопрос?, Неясно? – Antonio

+0

Немного неясно. Какие файлы вы ищете для приложений? Как они ищут эти файлы? Каково результирующее сообщение об ошибке? Какую версию python вы используете? –

ответ

0

Я не знаком с помощью setup.py так что это не может быть полезным, но ..

Если импортировать как SYS и Ос в верхней части вашей установки вы можете сделать что-то например:

if sys.getwindowsversion(): 
    <install to Windows dir> 
elif os.system('uname -a'): 
    ostest = os.popen('uname -a').split(' ') 
    if str('Linux') in ostest: 
     <install to Linux dir> 

и так далее. У меня нет Mac, поэтому я не знаю, если uname -a возвращает что-либо в одном, но если это так, вы можете разобрать ostest для чего-то вроде OSX (который, скорее всего, будет где-то там). И иметь отдельный файл или набор файлов для каждой ОС. Или еще проще, после того как они установки имеют некоторую строку в ваших исходных файлах, называемых «OSREPLACE», например, а затем использовать что-то вроде этого кода продолжающегося из вышеприведенных частей после нахождения операционной системы и назначив его в качестве переменного:

...  
if os == 'linux': 
    NEWSTRING = 'linuxpaths' 
elif os == 'mac': 
    NEWSTRING = 'macpaths' 
elif os == 'windows': 
    NEWSTRING = 'windowspaths' 

for file in files: 
     with open(str(file), 'r') as f: 
      data = f.read() 
      data = data.replace('OSREPLACE', 'NEWSTRING') 
     with open(str(file), 'w') as f: 
      f.write(data)  
Смежные вопросы