我从Python.org download page下载了Windows的“嵌入式” Python发行版之一。我意识到,在将Pip添加到其中之后,我可以安装软件包,但无法导入它们。经过一番挖掘后,我发现它掉落了默认启用的标志sys.flags.no_site
。这样可以防止Python将通常的Lib/site-packages
目录添加到Pip进行安装的路径。请注意,site.getsitepackages()
仍然显示正确的路径,只是它们没有添加到sys.path
中。
我肯定是因为“可嵌入”发行版应该是可移植的并且是独立的,但是我仍然希望能够使用安装在其目录下的Pip软件包。事实是,当您启动解释器并通过no_site
开关时,通常可以禁用-S
标志,但是默认情况下似乎没有办法重新启用它。据我所知,这是硬编码在分布式文件中的某个位置,没有配置文件或类似的东西。
我知道可以采用多种解决方法(我自己将site.getsitepackages()
添加到sys.path
,将软件包安装到Python根目录中...),但是我想知道是否有任何更清洁的方式来更改此行为。否则,如果您有关于如何有效地将此“可嵌入” Python与外部软件包一起使用的技巧,也可能会有所帮助。
编辑:用户软件包也会发生同样的问题,默认情况下也会启用标记no_user_site
,尽管这对我来说不是问题,因为我实际上更喜欢禁用用户站点软件包。