安装的模块是空的
Installed module is empty
我打算将 setuptools
用于 python3 代码。我的项目结构:
./testSetup/
./testSetup/testSetup
./testSetup/testSetup/foo.py
./testSetup/Setup.py
./testSetup/testSetup/foo.py内容:
def say_foo():
print('foo')
./testSetup/Setup.py内容:
from setuptools import setup, find_packages
import testSetup
setup(
name='testSetup',
version='0.0.1',
packages=find_packages(),
author='Bastien Sevajol',
author_email="testSetup@bux.fr",
description='test',
long_description='test test',
include_package_data=False,
url='http://bux.fr',
# https://pypi.python.org/pypi?%3Aaction=list_classifiers.
classifiers=[
"Programming Language :: Python",
]
)
当我 python Setup.py install
(with python3.4) 在虚拟环境中时:
python Setup.py install
running install
running bdist_egg
running egg_info
creating testSetup.egg-info
writing testSetup.egg-info/PKG-INFO
writing dependency_links to testSetup.egg-info/dependency_links.txt
writing top-level names to testSetup.egg-info/top_level.txt
writing manifest file 'testSetup.egg-info/SOURCES.txt'
reading manifest file 'testSetup.egg-info/SOURCES.txt'
writing manifest file 'testSetup.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-i686/egg
running install_lib
warning: install_lib: 'build/lib' does not exist -- no Python modules to install
creating build
creating build/bdist.linux-i686
creating build/bdist.linux-i686/egg
creating build/bdist.linux-i686/egg/EGG-INFO
copying testSetup.egg-info/PKG-INFO -> build/bdist.linux-i686/egg/EGG-INFO
copying testSetup.egg-info/SOURCES.txt -> build/bdist.linux-i686/egg/EGG-INFO
copying testSetup.egg-info/dependency_links.txt -> build/bdist.linux-i686/egg/EGG-INFO
copying testSetup.egg-info/top_level.txt -> build/bdist.linux-i686/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating dist
creating 'dist/testSetup-0.0.1-py3.4.egg' and adding 'build/bdist.linux-i686/egg' to it
removing 'build/bdist.linux-i686/egg' (and everything under it)
Processing testSetup-0.0.1-py3.4.egg
Copying testSetup-0.0.1-py3.4.egg to /home/bux/.virtualenvs/testsynergine2/lib/python3.4/site-packages
Adding testSetup 0.0.1 to easy-install.pth file
Installed /home/bux/.virtualenvs/testsynergine2/lib/python3.4/site-packages/testSetup-0.0.1-py3.4.egg
Processing dependencies for testSetup==0.0.1
Finished processing dependencies for testSetup==0.0.1
我可以看到一条警告说 install_lib: 'build/lib' does not exist -- no Python modules to install
。
如果我尝试使用我的模块:
python
Python 3.4.0 (default, Apr 11 2014, 13:05:18)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from testSetup import foo
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name 'foo'
>>> import testSetup
>>> dir(testSetup)
['__doc__', '__loader__', '__name__', '__package__', '__path__', '__spec__']
我的 Setup.py 怎么了?
这是因为 setuptools.find_packages
,当不带任何参数调用它时,它会从 setup.py
的位置查找源代码树中的包。在您的情况下,您在根级别没有任何文件夹。
问题不是来自您的 setup.py
文件,而是来自您组织项目的方式,通过像这样移动源代码:
testSetup
|--setup.py
|--/testSetup/foo.py
|--/testSetup/__init__.py
然后在 testSetup
.
中 cd-ing 时,您可以成功 pip setup.py install
您的 TestSetup/
目录中需要有一个 __init__.py
文件(该文件可以为空)。否则,该目录中的任何内容都将不可导入,并且 find_packages()
将永远找不到它。你可能想要 read about it.
./testSetup/
./testSetup/testSetup
./testSetup/testSetup/__init__.py
./testSetup/testSetup/foo.py
./testSetup/setup.py
另请注意,setup.py
应全部小写。虽然将其命名为 Setup.py
不会阻止脚本运行,但这不是惯例,可能不会被各种工具发现。
我打算将 setuptools
用于 python3 代码。我的项目结构:
./testSetup/
./testSetup/testSetup
./testSetup/testSetup/foo.py
./testSetup/Setup.py
./testSetup/testSetup/foo.py内容:
def say_foo():
print('foo')
./testSetup/Setup.py内容:
from setuptools import setup, find_packages
import testSetup
setup(
name='testSetup',
version='0.0.1',
packages=find_packages(),
author='Bastien Sevajol',
author_email="testSetup@bux.fr",
description='test',
long_description='test test',
include_package_data=False,
url='http://bux.fr',
# https://pypi.python.org/pypi?%3Aaction=list_classifiers.
classifiers=[
"Programming Language :: Python",
]
)
当我 python Setup.py install
(with python3.4) 在虚拟环境中时:
python Setup.py install
running install
running bdist_egg
running egg_info
creating testSetup.egg-info
writing testSetup.egg-info/PKG-INFO
writing dependency_links to testSetup.egg-info/dependency_links.txt
writing top-level names to testSetup.egg-info/top_level.txt
writing manifest file 'testSetup.egg-info/SOURCES.txt'
reading manifest file 'testSetup.egg-info/SOURCES.txt'
writing manifest file 'testSetup.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-i686/egg
running install_lib
warning: install_lib: 'build/lib' does not exist -- no Python modules to install
creating build
creating build/bdist.linux-i686
creating build/bdist.linux-i686/egg
creating build/bdist.linux-i686/egg/EGG-INFO
copying testSetup.egg-info/PKG-INFO -> build/bdist.linux-i686/egg/EGG-INFO
copying testSetup.egg-info/SOURCES.txt -> build/bdist.linux-i686/egg/EGG-INFO
copying testSetup.egg-info/dependency_links.txt -> build/bdist.linux-i686/egg/EGG-INFO
copying testSetup.egg-info/top_level.txt -> build/bdist.linux-i686/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating dist
creating 'dist/testSetup-0.0.1-py3.4.egg' and adding 'build/bdist.linux-i686/egg' to it
removing 'build/bdist.linux-i686/egg' (and everything under it)
Processing testSetup-0.0.1-py3.4.egg
Copying testSetup-0.0.1-py3.4.egg to /home/bux/.virtualenvs/testsynergine2/lib/python3.4/site-packages
Adding testSetup 0.0.1 to easy-install.pth file
Installed /home/bux/.virtualenvs/testsynergine2/lib/python3.4/site-packages/testSetup-0.0.1-py3.4.egg
Processing dependencies for testSetup==0.0.1
Finished processing dependencies for testSetup==0.0.1
我可以看到一条警告说 install_lib: 'build/lib' does not exist -- no Python modules to install
。
如果我尝试使用我的模块:
python
Python 3.4.0 (default, Apr 11 2014, 13:05:18)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from testSetup import foo
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name 'foo'
>>> import testSetup
>>> dir(testSetup)
['__doc__', '__loader__', '__name__', '__package__', '__path__', '__spec__']
我的 Setup.py 怎么了?
这是因为 setuptools.find_packages
,当不带任何参数调用它时,它会从 setup.py
的位置查找源代码树中的包。在您的情况下,您在根级别没有任何文件夹。
问题不是来自您的 setup.py
文件,而是来自您组织项目的方式,通过像这样移动源代码:
testSetup
|--setup.py
|--/testSetup/foo.py
|--/testSetup/__init__.py
然后在 testSetup
.
pip setup.py install
您的 TestSetup/
目录中需要有一个 __init__.py
文件(该文件可以为空)。否则,该目录中的任何内容都将不可导入,并且 find_packages()
将永远找不到它。你可能想要 read about it.
./testSetup/
./testSetup/testSetup
./testSetup/testSetup/__init__.py
./testSetup/testSetup/foo.py
./testSetup/setup.py
另请注意,setup.py
应全部小写。虽然将其命名为 Setup.py
不会阻止脚本运行,但这不是惯例,可能不会被各种工具发现。