Python包赢得';在现实生活中不能工作,只能在虚拟环境中工作 背景

Python包赢得';在现实生活中不能工作,只能在虚拟环境中工作 背景,python,python-3.x,pip,package,pypi,Python,Python 3.x,Pip,Package,Pypi,我有一个包,至少在我的虚拟环境中应该可以工作。(这是答案。) 因此,为了模拟安装,我在上面的stacksearch文件夹中运行pip install-e.(在我的虚拟环境中) (venv) RealName@theXliners-Mac stacksearch % pip install -e . Obtaining file:///Users/RealName/projects/stacksearch Requirement already satisfied: requests in /Us

我有一个包,至少在我的虚拟环境中应该可以工作。(这是答案。)

因此,为了模拟安装,我在上面的
stacksearch
文件夹中运行
pip install-e.
(在我的虚拟环境中)

(venv) RealName@theXliners-Mac stacksearch % pip install -e .
Obtaining file:///Users/RealName/projects/stacksearch
Requirement already satisfied: requests in /Users/bryanhu/venv/lib/python3.8/site-packages (from stacksearch==1.2.1.dev6) (2.24.0)
Requirement already satisfied: bs4 in /Users/bryanhu/venv/lib/python3.8/site-packages (from stacksearch==1.2.1.dev6) (0.0.1)
Requirement already satisfied: blessings in /Users/bryanhu/venv/lib/python3.8/site-packages (from stacksearch==1.2.1.dev6) (1.7)
Requirement already satisfied: lxml in /Users/bryanhu/venv/lib/python3.8/site-packages (from stacksearch==1.2.1.dev6) (4.5.2)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /Users/bryanhu/venv/lib/python3.8/site-packages (from requests->stacksearch==1
.2.1.dev6) (1.25.10)
Requirement already satisfied: certifi>=2017.4.17 in /Users/bryanhu/venv/lib/python3.8/site-packages (from requests->stacksearch==1.2.1.dev6) (2020.6.20
)
Requirement already satisfied: idna<3,>=2.5 in /Users/bryanhu/venv/lib/python3.8/site-packages (from requests->stacksearch==1.2.1.dev6) (2.10)
Requirement already satisfied: chardet<4,>=3.0.2 in /Users/bryanhu/venv/lib/python3.8/site-packages (from requests->stacksearch==1.2.1.dev6) (3.0.4)
Requirement already satisfied: beautifulsoup4 in /Users/bryanhu/venv/lib/python3.8/site-packages (from bs4->stacksearch==1.2.1.dev6) (4.9.1)
Requirement already satisfied: six in /Users/bryanhu/venv/lib/python3.8/site-packages (from blessings->stacksearch==1.2.1.dev6) (1.15.0)
Requirement already satisfied: soupsieve>1.2 in /Users/bryanhu/venv/lib/python3.8/site-packages (from beautifulsoup4->bs4->stacksearch==1.2.1.dev6) (2.0

.1)
Installing collected packages: stacksearch
  Attempting uninstall: stacksearch
    Found existing installation: stacksearch 1.2.1.dev6
    Uninstalling stacksearch-1.2.1.dev6:
      Successfully uninstalled stacksearch-1.2.1.dev6
  Running setup.py develop for stacksearch
Successfully installed stacksearch
(venv) RealName@theXliners-Mac stacksearch %
它起作用了!(要查看文件中的内容,请查看)

但遗憾的是,事实并非如此:我从testpypi得到的结果不起作用

(venv) RealName@theXliners-Mac ~ % pip install -i https://test.pypi.org/simple/ stacksearch==1.2.1.dev6; stacksearch
Looking in indexes: https://test.pypi.org/simple/
Collecting stacksearch==1.2.1.dev6
  Downloading https://test-files.pythonhosted.org/packages/a4/09/5040ea9750192d64ccb634e022967793759592a47637731a845dbb2ab636/stacksearch-1.2.1.dev6-py3
-none-any.whl (4.4 kB)
Requirement already satisfied: bs4 in ./venv/lib/python3.8/site-packages (from stacksearch==1.2.1.dev6) (0.0.1)
Requirement already satisfied: blessings in ./venv/lib/python3.8/site-packages (from stacksearch==1.2.1.dev6) (1.7)
Requirement already satisfied: lxml in ./venv/lib/python3.8/site-packages (from stacksearch==1.2.1.dev6) (4.5.2)
Requirement already satisfied: requests in ./venv/lib/python3.8/site-packages (from stacksearch==1.2.1.dev6) (2.24.0)
Requirement already satisfied: beautifulsoup4 in ./venv/lib/python3.8/site-packages (from bs4->stacksearch==1.2.1.dev6) (4.9.1)
Requirement already satisfied: six in ./venv/lib/python3.8/site-packages (from blessings->stacksearch==1.2.1.dev6) (1.15.0)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in ./venv/lib/python3.8/site-packages (from requests->stacksearch==1.2.1.dev6) (1
.25.10)
Requirement already satisfied: certifi>=2017.4.17 in ./venv/lib/python3.8/site-packages (from requests->stacksearch==1.2.1.dev6) (2020.6.20)
Requirement already satisfied: chardet<4,>=3.0.2 in ./venv/lib/python3.8/site-packages (from requests->stacksearch==1.2.1.dev6) (3.0.4)

Requirement already satisfied: idna<3,>=2.5 in ./venv/lib/python3.8/site-packages (from requests->stacksearch==1.2.1.dev6) (2.10)
Requirement already satisfied: soupsieve>1.2 in ./venv/lib/python3.8/site-packages (from beautifulsoup4->bs4->stacksearch==1.2.1.dev6) (2.0.1)
Installing collected packages: stacksearch
Successfully installed stacksearch-1.2.1.dev6
Traceback (most recent call last):
  File "/Users/bryanhu/venv/bin/stacksearch", line 156, in <module>
    main(sys.argv[1:])
  File "/Users/bryanhu/venv/bin/stacksearch", line 25, in main
    from stacksearch import __version__
ModuleNotFoundError: No module named 'stacksearch'
(venv)RealName@theXliners-Mac~%pip安装-ihttps://test.pypi.org/simple/ stacksearch==1.2.1.dev6;堆栈搜索
查看索引:https://test.pypi.org/simple/
正在收集stacksearch==1.2.1.dev6
正在下载https://test-files.pythonhosted.org/packages/a4/09/5040ea9750192d64ccb634e022967793759592a47637731a845dbb2ab636/stacksearch-1.2.1.dev6-py3
-none-any.whl(4.4KB)
已满足要求:bs4 in./venv/lib/python3.8/site-packages(来自stacksearch==1.2.1.dev6)(0.0.1)
已满足要求:祝福在./venv/lib/python3.8/site-packages中(来自stacksearch==1.2.1.dev6)(1.7)
已满足要求:lxml in./venv/lib/python3.8/site-packages(来自stacksearch==1.2.1.dev6)(4.5.2)
已满足要求:./venv/lib/python3.8/site-packages中的请求(来自stacksearch==1.2.1.dev6)(2.24.0)
已满足要求:beautifulsoup4 in./venv/lib/python3.8/site-packages(来自bs4->stacksearch==1.2.1.dev6)(4.9.1)
已满足要求:六个in./venv/lib/python3.8/site-packages(来自祝福->stacksearch==1.2.1.dev6)(1.15.0)
已满足要求:urllib3=1.25.0,!=1.25.1,=1.21.1in./venv/lib/python3.8/site-packages(从请求->堆栈搜索==1.2.1.dev6)(1
.25.10)
已满足要求:certifi>=2017.4.17 in./venv/lib/python3.8/site-packages(从请求->堆栈搜索==1.2.1.dev6)(2020.6.20)
已满足要求:chardet=3.0.2in./venv/lib/python3.8/site-packages(从请求->堆栈搜索==1.2.1.dev6)(3.0.4)
已满足要求:idna=2.5in./venv/lib/python3.8/site-packages(从请求->堆栈搜索==1.2.1.dev6)(2.10)
已满足要求:soupsieve>1.2 in./venv/lib/python3.8/site-packages(来自beautifulsoup4->bs4->stacksearch==1.2.1.dev6)(2.0.1)
安装收集的软件包:stacksearch
已成功安装stacksearch-1.2.1.dev6
回溯(最近一次呼叫最后一次):
文件“/Users/bryanhu/venv/bin/stacksearch”,第156行,在
main(sys.argv[1:])
文件“/Users/bryanhu/venv/bin/stacksearch”,主菜单第25行
从stacksearch导入\uuuu版本__
ModuleNotFoundError:没有名为“stacksearch”的模块
然后我测试它:

(venv) RealName@theXliners-Mac ~ % python
Python 3.8.2 (v3.8.2:7b3ab5921f, Feb 24 2020, 17:52:18)
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import stacksearch
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'stacksearch'
>>>
(venv)RealName@theXliners-Mac~%python
Python 3.8.2(v3.8.2:7b3ab5921f,2020年2月24日,17:52:18)
关于达尔文的[Clang 6.0(Clang-600.0.57)]
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>导入stacksearch
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ModuleNotFoundError:没有名为“stacksearch”的模块
>>>
我的问题
为什么当我执行
pip安装-e.
时,我可以安装程序包,但只有从PyPi安装它时,它才会安装二进制文件?

这可能就是您问题的答案。将其作为答案发布可以让我使用所需的空间和格式

基本问题是您没有在dist文件中包含
stacksearch
文件夹

我发现这一点的一个方法是从pypi.test下载焦油球。您可以查看文件夹中的内容,它只有脚本。另一种方法是查看
pip安装-e.
命令的结果。你可以在这里看到:

copying README.md -> stacksearch-1.2.1.dev6
copying setup.py -> stacksearch-1.2.1.dev6
copying scripts/stacksearch -> stacksearch-1.2.1.dev6/scripts
copying stacksearch.egg-info/PKG-INFO -> stacksearch-1.2.1.dev6/stacksearch.egg-info
它只是在复制脚本文件夹

您可以通过
python-msetup.py
查看生成的内容

可能的解决方案 可能是
find_packages
并没有找到您认为的一切。尝试将该函数导入解释器并运行它。以下是我自己的存储库中的结果:

find_packages()
Out[9]: 
['dicetables',
 'tests',
 'time_trials',
 'dicetables.eventsbases',
 'dicetables.factory',
 'dicetables.tools',
 'tests.eventsbases',
 'tests.factory',
 'tests.tools']
find_packages(include='dicetables')
Out[10]: []
find_packages(include=['dicetables'])
Out[11]: ['dicetables']
不一定是你所期望的。因此,尝试一下
find_软件包
,看看当你
pip安装-e时,到底复制了什么


p、 您在本地目录中没有发现任何问题,因为您的脚本可以从已经存在的文件夹中导入。如果您移动到了另一个目录,它应该会失败。

我从pypi下载了您的tar文件,它只有脚本。它没有stacksearch目录。setup.py是否存在问题?也许你需要一份舱单?我已经有一段时间没有读过最新的包装了嘿!你说得对!find_软件包无法按我需要的方式工作!你解决了我的问题!版本1.3.1.dev1正在运行!是时候把它送到真正的pypi了
copying README.md -> stacksearch-1.2.1.dev6
copying setup.py -> stacksearch-1.2.1.dev6
copying scripts/stacksearch -> stacksearch-1.2.1.dev6/scripts
copying stacksearch.egg-info/PKG-INFO -> stacksearch-1.2.1.dev6/stacksearch.egg-info
find_packages()
Out[9]: 
['dicetables',
 'tests',
 'time_trials',
 'dicetables.eventsbases',
 'dicetables.factory',
 'dicetables.tools',
 'tests.eventsbases',
 'tests.factory',
 'tests.tools']
find_packages(include='dicetables')
Out[10]: []
find_packages(include=['dicetables'])
Out[11]: ['dicetables']