我的一个 Python 脚本以交互模式运行,但从命令行运行时失败。不同之处在于,当从命令行运行时,它从一个坏的 .egg 文件中导入模块,而当以交互方式运行时,它使用当前目录中我的固定(解压缩)版本。
我的问题有两个方面:a) 为什么 Python 从这些位置运行时加载模块的方式不同,以及 b) 我有哪些解决方法?
我正在尝试为我的 postfix 安装设置 ftw.mail。因为我是 Linux 和 Python 的新手,所以我真的不知道它是正确的,朝着正确的方向前进还是垃圾。
从官方文档中我发现了这一点:
- 将 ftw.mail 添加到您的构建配置中:
[实例]
鸡蛋 +=
ftw.mail- 安装通用设置导入配置文件。
(来源:https : //github.com/4teamwork/ftw.mail/blob/master/README.rst)
我的第一个问题是:“/etc/postfix/”是所谓的“构建配置”吗?
其次,我在如何构建这个我尝试过的“鸡蛋”方面遇到了困难:
$ wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python for ez_setup
Run Code Online (Sandbox Code Playgroud)
然后:
$ sudo apt-get install python-setuptools
Run Code Online (Sandbox Code Playgroud)
并完成:
$ sudo easy_install ftw.mail
Run Code Online (Sandbox Code Playgroud)
在控制台上我被告知,鸡蛋在那里:
/usr/local/lib/python2.7/dist-packages/ftw.mail-2.3.1-py2.7.egg
我找到了它,我读到我必须从以下内容开始:
$ PYTHONPATH=/usr/local/lib/python2.7/dist-packages/cssutils-1.0-py2.7.egg
Run Code Online (Sandbox Code Playgroud)
基本上什么也没做。现在的问题是:我如何安装鸡蛋?
总结我的问题:
我想制作一个默认安装依赖项的 Python 包,除非用户特别表示他们不想要这样。
例子:
pip install package[no-django]
Run Code Online (Sandbox Code Playgroud)
当前的 pip 和 setup.py 机制是否提供了执行此操作的方法或不需要extra_requires每次都明确?
我正在一个没有 sudo 和互联网访问的环境中工作,因此拥有一个可以部署在任何地方的独立应用程序包非常有用。
使用 Maven 将我的 java 项目打包成可执行的 jar 文件,这对我的情况非常有用。
但是,我正在尝试使用 python 实现相同的目标,可能将所有必需的依赖项打包到 zip/egg/wheel 文件中,以便可以在任何环境中执行,只要安装了 python 二进制文件即可。
我尝试过使用python setup.py bdist_egg,但这会创建一个 Egg 文件,而没有我的顶级main .py 和我正在使用的模块。
非常感谢在这种情况下的任何经验!
如果我读这正确的,那么蛋格式的东西不应该再使用。相反,应该使用轮子格式。其他人似乎以同样的方式阅读。
有了这个假设:是否zip_safe与egg 之外的任何其他分发格式相关?
根据这个:
一个布尔值(真或假)标志,指定项目是否可以从 zip 文件安全安装和运行。如果未提供此参数,则 bdist_egg 命令每次构建鸡蛋时都必须分析项目的所有内容以查找可能的问题。
Setuptools 没有提到轮子。所以我想它与车轮无关。所以如果我不造鸡蛋,我就不需要这个?
但是,如果我使用 安装软件包pip install -e .,它似乎创建了一个 egg 文件(好吧,一个[package name].egg-info)...所以即使使用 Python 3.8,egg 可能还没有过时?
如何从 Azure 数据工厂 (AD) 管道执行egg 文件?目前我只能从执行egg文件的地方调用Databricks notebook。有没有办法直接做到这一点?
按照这个答案,我得到了以下异常:
{
"errorCode": "3201",
"message": "Must specify one jar or maven library for jar task, either via jar_uri or libraries.",
"failureType": "UserError",
"target": "Execute Egg",
"details": []
}
Run Code Online (Sandbox Code Playgroud)
在我的本地机器上我可以执行python dist/hello_world-1.0-py2.7.egg,这将打印'Hello world!'
src
|-__init__.py
|-main.py
__main__.py
setup.py
Run Code Online (Sandbox Code Playgroud)
设置文件
from setuptools import setup, find_packages
setup(
name='hello-world',
version='1.0',
packages=find_packages(),
py_modules=['__main__']
)
Run Code Online (Sandbox Code Playgroud)
__主_ _.py
from src.main import run
if __name__ == '__main__':
run()
Run Code Online (Sandbox Code Playgroud)
源代码/主.py
def run():
print('Hello world!') …Run Code Online (Sandbox Code Playgroud) 安装说明如下:
$ python setup.py build
$ sudo python setup.py install # or su first
Run Code Online (Sandbox Code Playgroud)
这给了我一个.egg文件.如何告诉安装将文件转储为普通的未压缩库?
谢谢!
我有一个Python程序(使用Django - 这有关系吗?),如果你愿意,我想"捆绑".我怎么做,就像可以为Java创建.jar一样?
我在我的 virtualenv 中,在 Python 2.7.2 下安装了一个为 pip 打包的蛋。鸡蛋有 16 个要求,其中之一 (pycryptopp 0.5.29) 已知会因 gcc-4.6 失败,因此必须使用 4.5 进行编译。系统同时安装了 gcc-4.6(默认)和 gcc-4.5。
我如何配置/破解 pip install 来专门构建这个包?(或者我只是在安装这个包时临时kludge链接/usr/bin/gcc)
我是否需要清理它损坏的现有 (virtualenv)/build 目录,如果需要,如何清理?
(我已经阅读了 pip 文档并搜索了 SO + SU)
我想为python 2.6安装Sphinx 1.1.3.但是,我没有sudo权利.因此,我不想在默认位置安装它,而是使用--prefix设置不同的位置.执行以下操作:
-bash-3.2$ easy_install Sphinx-1.1.3-py2.6.egg --prefix=/homes/ndeklein/python2.6/site-packages/
Run Code Online (Sandbox Code Playgroud)
给我:
error: can't create or remove files in install directory
The following error occurred while trying to add or remove files in the
installation directory:
[Errno 13] Permission denied: '/usr/lib/python2.4/site-packages/test-easy-install-18534.write-test'
The installation directory you specified (via --install-dir, --prefix, or
the distutils default setting) was:
/usr/lib/python2.4/site-packages/
Run Code Online (Sandbox Code Playgroud)
我输入错误的前缀吗?另外,我可以使用它(我已经与其他包一起使用):
python setup.py install --home=/homes/ndeklein/python2.6/site-packages/
Run Code Online (Sandbox Code Playgroud)
但我找不到setup.py脚本.我猜这个EGG没有setup.py脚本,是真的吗?
egg ×10
python ×9
pip ×3
easy-install ×2
setuptools ×2
azure ×1
django ×1
email ×1
gcc ×1
install ×1
interactive ×1
mysql ×1
postfix-mta ×1
prefix ×1
pycrypto ×1
setup.py ×1