我正在尝试为现有项目创建setup.py。该项目具有无法更改的目录结构。我需要setup.py与项目源文件位于同一文件夹中。
样本1,目录结构。
MyModule
├── __init__.py
├── MyApp.ini
├── MyApp.py
├── setup.py
└── foo.py
这是我的stetup.py
from setuptools import setup, find_packages
packages = find_packages(exclude=['ez_setup', 'tests', 'tests.*'])
console_script = list()
console_script.append('MyApp = MyApp:main')
py_modules = list()
py_modules.append('MyApp')
other_files = list()
other_files.append('MyApp.ini')
module_name = "MyModule"
mysetup = setup(name=module_name,
py_modules=py_modules,
version="1.0.0",
packages=packages,
package_dir={module_name: module_name},
package_data={module_name: other_files},
include_package_data=True,
entry_points={'console_scripts': console_script, },
zip_safe=False,
python_requires='>=2.7,<=3.0',
)
通过“ python setup install”安装MyModule之后。我无法从MyModule导入。 “从MyModule导入MyApp”无效。我可以直接导入。 “导入MyApp”有效。问题在于'import foo'也起作用。我有多个项目使用不同的foo.py。
示例2:
如果我可以更改目录结构,如下所示。安装正常。
MyModule
├── MyModule
│ ├── foo.py
│ ├── __init__.py
│ ├── MyApp.ini
│ └── MyApp.py
└── setup.py
有没有办法获取示例1,安装示例2的方法?
答案 0 :(得分:0)
我能够回答自己的问题。可以通过将package_dir设置为一级来完成,如下所示。我必须使用data_files而不是package_data来添加我的支持文件。
限制:安装脚本setup.py作为鸡蛋的一部分安装。我试图排除它,但是无论如何它都已安装。
from setuptools import setup, find_packages
packages = find_packages(exclude=['ez_setup', 'tests', 'tests.*'])
console_script = list()
console_script.append('MyApp = MyModule.MyApp:main')
packages.append("MyModule")
setup(name="MyModule",
version="1.0.0",
packages=packages,
package_dir={"MyModule": "../MyModule"},
data_files=[('MyModule', ['MyApp.ini'])],
include_package_data=True,
entry_points={'console_scripts': console_script, },
zip_safe=False,
python_requires='>=2.7,<=3.0',
)