2016-03-29 5 views
0

я создал свой первый пакет со следующим setup.py:setup.py установленный пакет не может быть импортирован

from setuptools import setup, find_packages 
setup(
    name='mygn', 
    version='0.1', 
    packages=find_packages(exclude=['test', 'test.*']), 
    include_package_data=True, 
    platforms='any', 
    install_requires=[ 
     'lxml==3.3.5', 
     'Pillow==3.0.0', 
     'requests==2.2.1', 
     'xmltodict==0.10.1', 
     'pdfrw==0.2', 
     'python-dotenv==0.4.0', 
     'boto==2.39.0', 
     'click==6.4' 
    ] 
) 

Я установил его в virtualenv с помощью pip install ., после чего просмотреть установленные пакеты с

$ pip freeze 
boto==2.39.0 
click==6.4 
mygn==0.1  # <== here it is 
lxml==3.3.5 
ordereddict==1.1 
pdfrw==0.2 
Pillow==3.0.0 
python-dotenv==0.4.0 
requests==2.2.1 
xmltodict==0.10.1 

затем я попробовал импортировать его, но это не удается:

(venv) $ python 
Python 2.7.10 (default, Oct 23 2015, 18:05:06) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import mygn 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named mygn 
>>> import xmltodict # no problem importing other modules from the pip freeze 
>>> 

Любые идеи ш Может, я ошибаюсь?

ответ

0

Another person trying to import with a similar issue

Это было их решение:

chmod -R 775 /usr/local/lib/python2.6/dist-packages/ 

Похоже, этот человек решить свою проблему, убедившись, что их права доступа позволяли им использовать файлы из папки пакета распределения. Я бы, вероятно, устранил проблему, выполнив то же самое, убедившись, что ваш файл и его каталог открыты для вас. Не слишком уверен, что может быть причиной этого.

+0

I 'chmod -R 777'-ed весь каталог virtualenv' venv', но, к сожалению, это не помогло. Любые другие идеи? – kramer65

+0

Мне интересно, будет ли использование одиночных кавычек для исключения find_packages работать с дикими картами, которые вы используете. Я только видел, что люди используют двойные кавычки. Даже для большинства примеров вроде: ** packages = find_packages (exclude = ["*. Tests", "* .tests. *"]) **. Одна из вещей, которые я видел, - это то, что даже если вы укажете информацию в ** package_data ** или ** ** файле MANIFEST.in **, некоторые из времен ** include_data_packages = True ** не будут на самом деле использовать все файлы, которые вы пытались включить. Возможно, вы захотите попробовать ** distutils ** вместо setuptools. – Dresden