Python 如何将根目录的所有内容分发到具有该名称的目录

Python 如何将根目录的所有内容分发到具有该名称的目录,python,distutils,setup.py,Python,Distutils,Setup.py,我有一个名为myproj的项目 /myproj __init__.py module1.py module2.py setup.py 我的setup.py如下所示 from distutils.core import setup setup(name='myproj', version='0.1', description='Does projecty stuff', author='Me', author_em

我有一个名为myproj的项目

/myproj
    __init__.py
    module1.py
    module2.py
    setup.py
我的
setup.py
如下所示

from distutils.core import setup

setup(name='myproj',
      version='0.1',
      description='Does projecty stuff',
      author='Me',
      author_email='me@domain.com',
      packages=[''])
但是这会将
module1.py
module2.py
放在安装目录中



如何指定
setup
,以便将目录
/myproj
及其所有内容放到安装目录中?

在该项目的
myproj
根目录中,您希望将
module1.py
module2.py
移动到名为
myproj
的目录下,如果您希望保持Python<3.3的兼容性,请在其中添加一个
\uuu init\uu
.py

├── myproj
│   ├── __init__.py
│   ├── module1.py
│   └── module2.py
└── setup.py

你也可以考虑使用,而不仅仅是ditutul。代码>设置工具提供了更多的辅助方法和附加属性,使设置此文件变得更加容易。这是我将为上述项目构建的最小

setup.py

from setuptools import setup, find_packages

setup(name='myproj',
      version='0.1',
      description="My project",
      author='me',
      author_email='me@example.com',
      packages=find_packages(),
      )
运行安装时,您应该会看到如下行:

copying build/lib.linux-x86_64-2.7/myproj/__init__.py -> build/bdist.linux-x86_64/egg/myproj
copying build/lib.linux-x86_64-2.7/myproj/module1.py -> build/bdist.linux-x86_64/egg/myproj
copying build/lib.linux-x86_64-2.7/myproj/module2.py -> build/bdist.linux-x86_64/egg/myproj
这表示安装脚本已拾取所需的源文件。运行python解释器(最好在该项目目录之外)以确保可以导入这些模块(不是由于相对导入)

另一方面,如果希望在根级别提供这些模块,则肯定需要显式声明


最后,对于任何人都可能有关于构建可分发python包的更具体的问题,是一个很好的资源。

所以您希望其他人能够通过
import myproj.module1
导入?
setup.py
不应该在您的项目目录中……@metatoaster是。@WayneWerner不是严格意义上的,如果作为
py_模块分发
我是否也需要
setup.py中的
packages=['myproj']
?是的,实际上,让我来解决这个问题。