У меня есть один файл Python, main.py. Я хотел бы иметь возможность сделать из него пакет .deb, а затем запустить main.py, введя имя пакета из терминала. Он написан на Python 3, поэтому имя пакета должно работать:
python3 main.py
Единственная известная мне зависимость - это python3.
Я попытался создать deb с зависимостью python3, а затем запустить python3 packagename
, но получаю:
/usr/bin/python3: can't find '__main__' module in 'packagename'
Попытка использовать Debreate для создания пакета не открывается с помощью:
Traceback (most recent call last):
File "/usr/bin/debreate", line 12, in <module>
import wx, sys, os, debreate, db, language, shutil
File "/usr/share/debreate/debreate.py", line 23, in <module>
import os, sys, wx.lib.dialogs, db, webbrowser, language, shutil, subprocess
File "/usr/share/debreate/db.py", line 5, in <module>
import wx, wx.combo, wx.lib.mixins.listctrl as LC, os, sys, language
ImportError: No module named combo
Создать .deb для скрипта python3 очень просто, и требуется лишь несколько изменений в debian / rules и debian / control, если вы знакомы с упаковкой python2.
В двух словах:
Создайте исходный код пакета
mkdir myscript-0.1
Скопируйте сценарий python3 (или пример сценария ниже) к исходному каталогу
cp ~/myscript myscript-0.1
cd myscript-0.1
Пример сценария:
#!/usr/bin/python3
if __name__ == '__main__':
print("Hello world")
Создать скелет упаковки (debian / *)
dh_make -s --indep --createorig
Удалить файлы примеров
rm debian/*.ex debian/*.EX debian/README.*
Редактировать debian / control
Заменить его содержимое следующим текстом:
Source: myscript
Section: utils
Priority: optional
Maintainer: Name,
Build-Depends: debhelper (>= 9), python3
Standards-Version: 3.9.5
X-Python3-Version: >= 3.2
Package: myscript
Architecture: all
Depends: ${misc:Depends}, ${python3:Depends}
Description: insert up to 60 chars description
insert long description, indented with spaces
debian / install должен содержать скрипт для установки, а также целевой каталог
echo myscript usr/bin > debian/install
Редактировать debian / rules
Заменить его содержание следующим текстом:
#!/usr/bin/make -f
%:
dh $@ --with=python3
Примечание: это табуляция перед dh $@
, а не четыре пробела!
Постройте пакет
debuild -us -uc
Вы получите несколько предупреждений / ошибок Lintian, но ваш пакет готов к использованию:
../myscript_0.1-1_all.deb
За ошибку, с которой вы столкнулись в debreate ,
sudo apt-get install python-wxgtk2.8
source: source of вышеуказанное решение