2016-01-03 26 views
0

我在python中的项目在许多文件中有许多脚本。一般结构是 :在python中创建多平台安装程序

Project/ 
|-- bin/ 
    |-- project 
     |--calculations 
      |--some scripts 
     |--mainApp 
      |--some scripts 
     |--interpolations 
      |--some scripts 
     |--more files 
      |--other scripts  
| 
|-- tests 
|-- setup.py 
|-- README 

我有很多进口这样

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 = "[email protected]", 
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 

它生成dist文件夹与tar.gz文件,但是当我解压它时,每个脚本都在/ bin文件夹中。当我尝试通过

python3 MainApp.py 

运行MainApp.py我收到一个错误:

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 

它的工作原理,但它不在Pycharm那里有通往每个地方的路径文件。 是否有任何选项可以生成istaller,解包后的路径与原始项目的路径相同,还是始终将所有文件添加到一个文件夹?

回答

0

这里是我使用的解决方案,一个简单的GUI(Tkinter的)程序:

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

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

  • 所有其他:与Linux相似。

这是Python的美丽之一。

+0

嗯,不好意思,但对我来说有点过于宽泛。我在linux上工作,正如你可以看到的问题,我已经试图做你喜欢说的话,问题是保留脚本路径:'python3 setup.py bdist --formats = gztar'。 P.S我使用QtDesigner来构建GUI – Michu93