Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何组织一个既有可执行文件又有同名包的python项目_Python_Linux - Fatal编程技术网

如何组织一个既有可执行文件又有同名包的python项目

如何组织一个既有可执行文件又有同名包的python项目,python,linux,Python,Linux,我经常创建同时提供包和可执行文件的python项目,在这些项目中使用相同的名称是有意义的。例如,我创建了一个密码程序实用程序,其中包括一个为我生成密码的程序,还提供了一个python库包,允许我从其他python脚本访问密码。每当我这样做的时候,我都在努力组织我的文件。我试图满足以下约束条件: 安装后,可执行文件和库应具有相同的名称,以突出显示两者之间的关系(这意味着我希望使用'abraxas'运行程序,并使用'import abraxas'导入包) 我必须能够在不正式安装可执行文件的情况下从源

我经常创建同时提供包和可执行文件的python项目,在这些项目中使用相同的名称是有意义的。例如,我创建了一个密码程序实用程序,其中包括一个为我生成密码的程序,还提供了一个python库包,允许我从其他python脚本访问密码。每当我这样做的时候,我都在努力组织我的文件。我试图满足以下约束条件:

  • 安装后,可执行文件和库应具有相同的名称,以突出显示两者之间的关系(这意味着我希望使用'abraxas'运行程序,并使用'import abraxas'导入包)
  • 我必须能够在不正式安装可执行文件的情况下从源目录运行程序(以加快调试)
  • 我必须能够直接将包导入可执行文件
  • 我希望避免攻击sys.path
  • 我正在使用linux,所以我不想给我的可执行文件添加愚蠢的扩展,比如.exe
  • 通常,可执行文件和包将位于同一目录中,但在这种情况下,这不起作用,因为名称冲突

    或者,我可以将可执行文件放在另一个目录中,但是如果不首先安装它,程序将无法运行,因为它无法自然地找到包

    我找到的解决这个问题的唯一方法是更改源目录中可执行文件的名称,并将其放在包目录旁边;然后在安装后重命名可执行文件


    有谁能为这个问题提出更好的解决方案吗?

    我认为没有什么好的解决方案,因为这不是一件好事。如果有的话,您可以将脚本(或导入并运行脚本代码的代码)和库都放在同一个文件中,使用
    If\uuuuu name\uuu==“\uuuu main\uuuu”
    块,该块仅在直接执行文件时才会运行。通常,包足够大,无法放入一个文件中。我想做的事情中有什么你认为不是一件好事(也许你可以给出一个数字)?@AugustWest你有没有找到一个好的解决方案?是的,我使用入口点。在setup.py文件中,我添加了:entry_points={'console_scripts':['abraxas=abraxas.main:main'],},