Установка Python setuptools не устанавливает пакет - PullRequest
0 голосов
/ 15 октября 2018

Я создал форк из этого репозитория git: https://github.com/QQuick/Opy

Я добавил __init.py__ в каталог / пакет opy.Когда я запускаю setup.py install, пакет opy не устанавливается в мою директорию site-packages.Почему?

Вот скрипт setup.py:

import os
import sys

sys.path.append ('opy')
import opy

from setuptools import setup
import codecs

def read (*paths):
    with codecs.open (os.path.join (*paths), 'r', encoding = 'utf-8') as aFile:
        return aFile.read()

setup (
    name = 'Opy',
    version = opy.programVersion,
    description = 'OPY - Obfuscator for Python, string obfuscation added, keyword added',
    long_description = (
        read ('README.rst') + '\n\n' +
        read ('license_reference.txt')
    ),
    keywords = ['opy', 'obfuscator', 'obfuscation', 'obfuscate', 'kivy', 'pyo', 'python'],
    url = 'https://github.com/JdeH/Opy/',
    license = 'Apache 2',
    author = 'Jacques de Hooge',
    author_email = 'jacques.de.hooge@qquick.org',
    packages = ['opy'], 
    include_package_data = True,
    install_requires = [],
    classifiers = [
        'Development Status :: 5 - Production/Stable',
        'Intended Audience :: Developers',
        'Natural Language :: English',
        'License :: Other/Proprietary License',
        'Topic :: Software Development :: Libraries :: Python Modules',
        'Operating System :: OS Independent',
        'Programming Language :: Python :: 2.7',
        'Programming Language :: Python :: 3',
    ],
)

Вывод:

>python setup.py install
running install
running bdist_egg
running egg_info
creating Opy.egg-info
writing Opy.egg-info\PKG-INFO
writing top-level names to Opy.egg-info\top_level.txt
writing dependency_links to Opy.egg-info\dependency_links.txt
writing manifest file 'Opy.egg-info\SOURCES.txt'
reading manifest file 'Opy.egg-info\SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '*.des' found anywhere in distribution
writing manifest file 'Opy.egg-info\SOURCES.txt'
installing library code to build\bdist.win32\egg
running install_lib
running build_py
creating build
creating build\lib
creating build\lib\opy
copying opy\opy.py -> build\lib\opy
copying opy\opymaster.py -> build\lib\opy
copying opy\__init__.py -> build\lib\opy
creating build\bdist.win32
creating build\bdist.win32\egg
creating build\bdist.win32\egg\opy
copying build\lib\opy\opy.py -> build\bdist.win32\egg\opy
copying build\lib\opy\opymaster.py -> build\bdist.win32\egg\opy
copying build\lib\opy\__init__.py -> build\bdist.win32\egg\opy
byte-compiling build\bdist.win32\egg\opy\opy.py to opy.pyc
byte-compiling build\bdist.win32\egg\opy\opymaster.py to opymaster.pyc
byte-compiling build\bdist.win32\egg\opy\__init__.py to __init__.pyc
creating build\bdist.win32\egg\EGG-INFO
copying Opy.egg-info\PKG-INFO -> build\bdist.win32\egg\EGG-INFO
copying Opy.egg-info\SOURCES.txt -> build\bdist.win32\egg\EGG-INFO
copying Opy.egg-info\dependency_links.txt -> build\bdist.win32\egg\EGG-INFO
copying Opy.egg-info\top_level.txt -> build\bdist.win32\egg\EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating dist
creating 'dist\Opy-1.1.28.1-py2.7.egg' and adding 'build\bdist.win32\egg' to it
removing 'build\bdist.win32\egg' (and everything under it)
Processing Opy-1.1.28.1-py2.7.egg
Copying Opy-1.1.28.1-py2.7.egg to c:\python27\lib\site-packages
Adding Opy 1.1.28.1 to easy-install.pth file

Installed c:\python27\lib\site-packages\opy-1.1.28.1-py2.7.egg
Processing dependencies for Opy==1.1.28.1
Finished processing dependencies for Opy==1.1.28.1

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Подводя итог высказываниям из комментариев:

setuptools.setup выполняет свою работу;однако вместо простого копирования модулей в site-packages (что делает distutils), python setup.py install создаст файл egg, который затем устанавливается, просто скопировав его в site-packages.Таким образом, впоследствии легко удалить пакет, просто удалив файл с одним яйцом.

Если вам не нравится, когда пакет устанавливается в архиве, вы можете:

  • выполните «старую и неуправляемую» установку:

    $ python setup.py install --old-and-unmanageable
    

    , но имейте в виду, что при этом вы не сможете правильно удалить пакет.Тем не менее, эта команда может использоваться, например, в виртуальной среде, которую вы планируете впоследствии удалить в любом случае;

  • использовать pip, поскольку она может устанавливать пакеты из исходных каталогов:

    $ pip install dir/
    

    где dir - каталог, содержащий скрипт setup.py.Это предпочтительный способ;pip сначала создаст файл колеса, а затем установит его.Модули будут установлены как плоские (записанные на диск в виде файлов), но pip также будет хранить список установленных файлов среди других метаданных, поэтому все файлы будут удалены должным образом при удалении пакета.

0 голосов
/ 15 октября 2018

Я заменил

from setuptools import setup

на

from distutils.core import setup

, и это сработало.Но разве версия модуля setuptools этой функции не должна устанавливаться в каталог site-packages?Документация указывает на это.Я не понимаю ...

...