【问题标题】:Setuptools: Import from 'project' with setup.py in source folderSetuptools:使用源文件夹中的 setup.py 从“项目”导入
【发布时间】:2019-04-28 13:13:06
【问题描述】:

我正在尝试为现有项目创建 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”不起作用。我可以直接导入。 “导入我的应用程序”有效。问题是“import foo”也有效。我有多个具有不同 foo.py 的项目。

示例 2:

如果我可以更改目录结构,如下所示。安装正常。

MyModule
├── MyModule
│   ├── foo.py
│   ├── __init__.py
│   ├── MyApp.ini
│   └── MyApp.py
└── setup.py

有没有办法获取示例 1,以示例 2 的方式安装?

【问题讨论】:

    标签: python python-2.7 setuptools


    【解决方案1】:

    我能够回答我自己的问题。可以通过将 package_dir 设置为上一级来完成,如下所示。我不得不使用 data_files 而不是 package_data 来添加我的支持文件。

    限制:安装脚本 setup.py 作为 egg 的一部分安装。我试图排除它,但它还是被安装了。

    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',
          )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-26
      • 1970-01-01
      • 2021-01-03
      • 2014-04-30
      • 2016-12-25
      • 1970-01-01
      相关资源
      最近更新 更多