2016-07-19 8 views
0

У меня есть проект python, который я хочу распространять. Я прочитал несколько руководств о том, как написать файл setup.py и как установить произведенное колесо: sample project example, setup.py tutorial, wheel doc, wheel install или wheel install.Неверная папка после установки колеса с python

Структура моего проекта:

project_name 
    |_ lib 
     |_ project_folder 
     |_ py modules 
    |_ test 
    |_ setup.py 
    |_README.rst 

Я строй своего колеса, как этот python setup.py bdist_wheel, а потом я беру произведенное колесо в другую папку вне моего проекта и сделать pip install my_wheel. Я попытался также pip install --no-index --find-links=my_wheel project_name

Проблема заключается в том, что, когда я смотрю в мою папку питон site-packages, вместо того, чтобы:

python folders 
project_name 
project_name-2.0.0.dist-info 

папка project_name разбивается на Lib и тест:

python folders 
lib 
project_name-2.0.0.dist-info 
test 

I не понимаю, почему мой project_name не похож на другие папки python, сгруппированные. Может ли кто-нибудь помочь мне лучше понять?

setup.py:

from setuptools import setup, find_packages 
from codecs import open 
from os import path 

root_folder = path.abspath(path.dirname(__file__)) 

with open(path.join(root_folder, "README.rst"), encoding="utf-8") as f: 
    long_description = f.read() 

setup(
    name = "project", 
    version = "2.0.0", 

    description = "My project is cool", 
    long_description = long_description,  

    packages = find_packages(), 

    include_package_data = True 
) 
+0

У вас есть '' '' '' '' '' '' '' '' '' '' '' '' 'файлы' __init __ .py', случайно? –

+0

Да, они есть. У них не было этого? – user3314570

+0

Нет, потому что они не являются пакетами. 'find_packages()' использует '__init __. py' файлы для определения того, что такое пакет. –

ответ

0

find_packages() определяет пакеты по __init__.py файлов. Похоже, что у ваших lib и tests каталогов есть __init__.py файлов в них.

Ни ваши lib, ни tests каталоги - это пакеты, удалите из них файлы __init__.py. Таким образом, find_packages() будет включать только project_folder() в результате распределения (источник, двоичный или колесный).

+0

Я тестировал этот путь (кстати, вы были правильными 'lib' и' tests' не должны были быть пакетами), но у меня все еще нет моей 'project_folder' в виде папки, только' project_folder-2.0.0.dist -info'. Я не понимаю, почему, потому что у меня есть сообщение «установка собранных пакетов project_folder», поэтому я подумал, что увижу свою папку – user3314570

+0

@ user3314570: использовался ли кеш диска? Сначала я создаю tar-файл sdist и проверяю, что в нем находится, * затем * попробуйте установить его как колесо (убедитесь, что вы удалили старое, и вместо этого не используется кэшированное колесо). –

+0

Я новичок в этом методе, поэтому я не знаю, что такое кеш диска и как с ним бороться. Сначала я сделал sdist, прежде чем хотеть колесо с 'python setup.py sdist'. Внутри Ihave моя 'project_folder' с его lib и тестовыми папками внутри, как я желаю. – user3314570