Как создать пакет python3 [дубликат]

new_list = my_list[:]

new_list = my_list Попытайтесь это понять. Предположим, что my_list находится в памяти кучи в месте X, то есть my_list указывает на X. Теперь, назначив new_list = my_list, вы даете new_list указывать на X. Это называется мелкой копией.

Теперь, если вы назначили new_list = my_list[:], вы просто копируете каждый объект my_list в new_list. Это известно как Deep copy.

Другой способ, которым вы можете это сделать:

  • new_list = list(old_list)
  • import copy new_list = copy.deepcopy(old_list)
12
задан famousgarkin 13 July 2014 в 15:51
поделиться

2 ответа

Я могу легко реплицировать вашу проблему, фактически даже без использования вашего пакета:

$ python empty
.env/bin/python: can't open file 'empty': [Errno 2] No such file or directory
$ mkdir empty
$ python empty
.env/bin/python: can't find '__main__' module in 'empty'
$ python Empty
.env/bin/python: can't find '__main__' module in 'Empty'

Таким образом, вы вообще не звоните в свою библиотеку, вы просто передаете интерпретатору Python несуществующее имя сценария, которое в случае, если в рабочем каталоге он похож на именованный каталог (без учета регистра), он пытается его выполнить.

Мне удалось установить пакет из PyPi только в порядке и можно импортировать его в порядке, но Кажется, что нет какой-либо точки входа , ничего полезного не экспортируется на верхнем уровне, а исполняемые скрипты не добавляются в ящик Python:

>>> import etltest
>>> dir(etltest)
['__author__', '__builtins__', '__doc__', '__file__', '__name__', '__package__',
'__path__', '__version__']

Запуск etlTest.py, как указано в Quickstart из ваших документов тоже не работает:

$ python .env/lib/python2.7/site-packages/etltest/etlTest.py
2014-07-13 17:19:56,831 - settings - DEBUG - Attempting to load .env/lib/python2.7/site-packages/.etltest-settings.yml
2014-07-13 17:19:56,832 - settings - WARNING - No such file or directory .env/lib/python2.7/site-packages/.etltest-settings.yml
2014-07-13 17:19:56,832 - settings - DEBUG - Attempting to load .env/lib/python2.7/site-packages/.etltest-settings.yml
2014-07-13 17:19:56,832 - settings - WARNING - No such file or directory .env/lib/python2.7/site-packages/.etltest-settings.yml
2014-07-13 17:19:56,832 - settings - WARNING - Could not find settings file in .env/lib/python2.7/site-packages/.etltest-settings.yml,.env/lib/python2.7/site-packages/.etltest-settings.yml. Using defaults where present.
Traceback (most recent call last):
  File ".env/lib/python2.7/site-packages/etltest/etlTest.py", line 73, in <module>
    main(sys.argv[1:])
  File ".env/lib/python2.7/site-packages/etltest/etlTest.py", line 22, in main
    SettingsManager().first_run_test()
  File ".env/lib/python2.7/site-packages/etltest/utilities/settings_manager.py", line 29, in __init__
    self.app_name = etltest_config['app_name']
KeyError: 'app_name'

Я бы сказал, что ваш пакет еще не подходит для ditribution. Вы можете очистить некоторые зависимости от среды разработки и прочитать точки входа setuptools , чтобы обеспечить правильные исполняемые файлы командной строки вместе с вашим пакетом. Также он не должен запускаться в режиме отладки по умолчанию, если это не какой-то тестовый выпуск.

8
ответ дан Christian Dean 21 August 2018 в 19:06
поделиться
  • 1
    Спасибо, это очень помогает! Я попробую очистить пакет и повторю попытку. Я забыл изменить настройку, когда я упаковал etlTest, поэтому он работает в режиме отладки. – OpenDataAlex 13 July 2014 в 16:51

Недавно я получил ту же проблему и окончательно нашел решение самостоятельно. Так как ошибка говорит, я добавил файл __main__.py на том же пути, что и мой __init__.py.

Внутри __main__.py я добавил следующий код:

 from mypackage.mymodule import main 
      main() 

main() была основной функцией моего кода. И теперь это работает.

здесь мой каталог:

package 
|__dirpackage
   |_mypackage.py
   |_ __init__.py
   |_ __main__.py
|_setup.py`
2
ответ дан Lbrth_BoC 21 August 2018 в 19:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: