Я перенес приложение на Quickly, заменяя все файлы по мере необходимости. Когда я говорю quickly run
, приложение работает без ошибок. Однако проблема возникает, когда я пытаюсь упаковать / установить его. Вот проблема, которая возникает, когда я пытаюсь установить:
$ sudo python ./setup.py install
running install
running build
running build_py
running build_scripts
running build_i18n
intltool-update -p -g foobar
running build_icons
running build_help
running install_lib
running install_scripts
changing mode of /usr/local/bin/foobar to 755
running install_data
running install_egg_info
Removing /usr/local/lib/python2.7/dist-packages/foobar-0.1a.egg-info
Writing /usr/local/lib/python2.7/dist-packages/foobar-0.1a.egg-info
Traceback (most recent call last):
File "setup.py", line 146, in <module>
cmdclass={'install': InstallAndUpdateDataDirectory}
File "/usr/lib/python2.7/dist-packages/DistUtilsExtra/auto.py", line 100, in setup
distutils.core.setup(**attrs)
File "/usr/lib/python2.7/distutils/core.py", line 152, in setup
dist.run_commands()
File "/usr/lib/python2.7/distutils/dist.py", line 953, in run_commands
self.run_command(cmd)
File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "setup.py", line 120, in run
target_data = '/' + os.path.relpath(self.install_data, self.root) + '/'
File "/usr/lib/python2.7/posixpath.py", line 422, in relpath
start_list = [x for x in abspath(start).split(sep) if x]
File "/usr/lib/python2.7/posixpath.py", line 352, in abspath
if not isabs(path):
File "/usr/lib/python2.7/posixpath.py", line 61, in isabs
return s.startswith('/')
AttributeError: 'NoneType' object has no attribute 'startswith'
Так как с программой quickly run
все в порядке, я думаю, что это проблема с файлом установки: Вот часть, которую я настроил для setup.py
:
DistUtilsExtra.auto.setup(
name='foobar',
version='0.1a',
license='GPL-3',
author='My name',
author_email='myemail@foobar.com',
description='A description',
long_description='A looooonger description',
url='https://launchpad.net/foobar',
cmdclass={'install': InstallAndUpdateDataDirectory}
)
Дополнительная информация:
$ quickly --version
Quickly 12.08.1
Python interpreter: /usr/bin/python 2.7.5
Python standard library: /usr/lib/python2.7
Quickly used library: /usr/lib/python2.7/dist-packages/quickly
Quickly data path: /usr/share/quickly
Quickly detected template directories:
/usr/share/quickly/templates/
Copyright 2009 Rick Spencer
Copyright 2009-2011 Didier Roche
Copyright 2010-2011 Canonical Ltd
https://launchpad.net/quickly
quickly comes with ABSOLUTELY NO WARRANTY. quickly is free software, and
you may use, modify and redistribute it under the terms of the GNU
General Public License version 3 or later.
Я использую Ubuntu 13.10, но я также проверил это на Trusty и получил тот же результат.
Спасибо!
self.root
в вашем файле setup.py - None
, что вызывает исключение.
Пример:
# This is to mimic line 120 in your setup.py file
# target_data = '/' + os.path.relpath(self.install_data, self.root) + '/'
>>> os.path.relpath("/spam/eggs", None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/posixpath.py", line 422, in relpath
start_list = [x for x in abspath(start).split(sep) if x]
File "/usr/lib/python2.7/posixpath.py", line 352, in abspath
if not isabs(path):
File "/usr/lib/python2.7/posixpath.py", line 61, in isabs
return s.startswith('/')
AttributeError: 'NoneType' object has no attribute 'startswith'
Это та же трассировка. Я не знаком с Quickly, но вам придется выяснить, почему для self.root
установлено значение None
, а затем исправить это.