在python中创建多平台安装程序

在python中创建多平台安装程序,python,Python,我的python项目在许多文件中有许多脚本。总体结构是 : 我有很多这样的进口货 import bin.project.mainApp.MainAppFrame 我的setup.py文件是 from setuptools import setup, find_packages setup( name = 'Application to orifices', version = '1.0', author = "Michał Walkowiak", author_email = "michal

我的python项目在许多文件中有许多脚本。总体结构是 :

我有很多这样的进口货

import bin.project.mainApp.MainAppFrame
我的setup.py文件是

from setuptools import setup, find_packages

setup(
name = 'Application to orifices',
version = '1.0',
author = "Michał Walkowiak",
author_email = "michal.walkowiak93@gmail.com",
description = "Application in python 3.4 with noSQL BerkleyDB",
packages = find_packages(),
entry_points={
    'console_scripts': [
        'PracaInzynierska = bin.project.mainApp.MainApp:__init__'
    ]
},
scripts = [
    'bin/project/mainApp/__init__.py',
    'bin/project/mainApp/MainApp.py',
    'bin/project/mainApp/MainAppFrame.py',

    'bin/project/informations/__init__.py',
    'bin/project/informations/DisplayInformations.py',
    'bin/project/informations/InformationsFrame.py',

    'bin/project/calculations/Calculate.py',
    'bin/project/calculations/UnitConversion.py',

    'bin/project/databaseHandler/__init__.py',
    'bin/project/databaseHandler/databaseHandler.py',

    'bin/project/databaseMonitoring/__init__.py',
    'bin/project/databaseMonitoring/DatabaseFrame.py',
    'bin/project/databaseMonitoring/DisplayDatabase.py',

    'bin/project/initializeGUI/__init__.py',
    'bin/project/initializeGUI/CalculationsFrame.py',
    'bin/project/initializeGUI/initGui.py',

    'bin/project/interpolation/__init__.py',
    'bin/project/interpolation/Interpolate.py',

    'bin/project/orificeMethods/__init__.py',
    'bin/project/orificeMethods/methodsToCountOrifice.py',

    'bin/project/steamMethods/__init__.py',
    'bin/project/steamMethods/methodToCountParamsSteam.py',

    'bin/project/waterMethods/__init__.py',
    'bin/project/waterMethods/methodsToCountParamsWater.py'
    ]

)
我将setup.py与

    python3 setup.py bdist --formats=gztar
它是带有tar.gz文件的generatedist文件夹,但当我解压缩它时,每个脚本都在/bin文件夹中。当我尝试通过运行MainApp.py时

    python3 MainApp.py
我收到一个错误:

    Traceback (most recent call last):
    File "MainApp.py", line 7, in <module>
    import bin.project.mainApp.MainAppFrame
    ImportError: No module named 'bin'

它可以工作,但在Pycharm中不起作用,因为在Pycharm中,每个文件都有路径。
是否可以选择生成istaller,解包后它将与原始项目具有相同的路径,或者它总是将所有文件添加到一个文件夹?

以下是我使用的一个简单GUI(tkinter)程序解决方案:

  • Windows:复制Python文件夹并创建一个可移植版本,然后通过创建快捷方式启动程序,即
    Python.exe../foo/start.py
    。使用Nullsoft Installer创建安装文件,该文件将负责Windows系统上的链接、目录和卸载步骤

  • Linux:分发代码,指定依赖项,创建为可执行文件创建链接的脚本。当然,您可以浏览有关如何创建自己的软件包(即Debian软件包)的信息

  • 所有其他:与Linux类似


这是Python的优点之一。

很抱歉,对我来说,它有点太笼统了。我在linux上工作,正如您所看到的,我已经尝试过像您所说的那样做,问题是在“python3 setup.py bdist--formats=gztar”之后保留脚本的路径。另外,如果有必要的话,我使用QtDesigner来构建GUI
    Traceback (most recent call last):
    File "MainApp.py", line 7, in <module>
    import bin.project.mainApp.MainAppFrame
    ImportError: No module named 'bin'
    import bin.project.mainApp.MainAppFrame
    import MainAppFrame