我对 python 打包相当陌生,我正在尝试创建一个命令行工具,以便我可以发送给客户端以与 AWS 中的服务进行交互。
\n我的目标是拥有一个命令行工具来将文件夹中的文件上传resources到 s3,稍后供其他服务使用。
这是我第一次使用 setuptools 来实现这一点,但我似乎在某些时候迷失了方向。
\n我的项目结构是这样的:
\nProjectRoot\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 MANIFEST.in\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Pipfile\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Pipfile.lock\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 dist\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 myscript-0.0.1.whl\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 myscript-0.0.1.tar.gz\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 pyproject.toml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 resources\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 artifacts\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 code1.jar\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 code2.jar\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 api.keys\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package1.tar.gz\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 install-linux.sh\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 confs.yaml\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 recipe.template.yaml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 code\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 myscript.py\nRun Code Online (Sandbox Code Playgroud)\n我尝试让 setuptools 将文件添加到带有 pyproject.toml 的 .tar 包中:
\n[build-system]\nrequires = ["setuptools"]\nbuild-backend = "setuptools.build_meta"\n\n[project]\nname = "myscript"\nversion = "0.0.1"\ndependencies = [\n 'Click',\n 'boto3',\n 'botocore',\n]\n\n[project.scripts]\nmyscript …Run Code Online (Sandbox Code Playgroud) 这是完整的代码。它在https://learn.deeplearning.ai/笔记本上运行得非常好。但是当我在本地计算机上运行它时,出现以下错误
ImportError:无法导入 docarray python 包
我尝试过重新安装/强制安装 langchain 和 lanchain[docarray] (pip 和 pip3)。我使用迷你 conda 虚拟环境。蟒蛇版本3.11.4
from langchain.vectorstores import DocArrayInMemorySearch
from langchain.schema import Document
from langchain.indexes import VectorstoreIndexCreator
import openai
import os
os.environ['OPENAI_API_KEY'] = "xxxxxx" #not needed in DLAI
docs = [
Document(
page_content="""[{"API_Name":"get_invoice_transactions","API_Description":"This API when called will provide the list of transactions","API_Inputs":[],"API_Outputs":[]}]"""
),
Document(
page_content="""[{"API_Name":"get_invoice_summary_year","API_Description":"this api summarizes the invoices by vendor, product and year","API_Inputs":[{"API_Input":"Year","API_Input_Type":"Text"}],"API_Outputs":[{"API_Output":"Purchase Volume","API_Output_Type":"Float"},{"API_Output":"Vendor Name","API_Output_Type":"Text"},{"API_Output":"Year","API_Output_Type":"Text"},{"API_Output":"Item","API_Output_Type":"Text"}]}]"""
),
Document(
page_content="""[{"API_Name":"loan_payment","API_Description":"This API calculates the monthly payment for a loan","API_Inputs":[{"API_Input":"Loan_Amount","API_Input_Type":"Float"},{"API_Input":"Interest_Rate","API_Input_Type":"Float"},{"API_Input":"Loan_Term","API_Input_Type":"Integer"}],"API_Outputs":[{"API_Output":"Monthly_Payment","API_Output_Type":"Float"},{"API_Output":"Total_Interest","API_Output_Type":"Float"}]}]"""
),
Document( …Run Code Online (Sandbox Code Playgroud) 我已经使用“pip install configparser”安装了 configparser 来获取 configparser-3.5.0,并且在我的 PYTHONPATH 上。但是当我将它用作“import configparser”时,我看到一个错误“No module named backports.configparser”。conigparser.py 使用这个 'backports' 模块,我在 python 路径下看到了 'backports' 模块,但不知何故它无法识别该模块。有人可以告诉我如何解决这个问题吗?这在我看来肯定是 configparser 的一些版本问题,但到目前为止我没有找到任何答案。帮助将不胜感激,谢谢
我试图gen_dataset_ops在 tensorflow 中找到函数或类的定义,它的源代码在这里。我发现很多地方都是这样导入的:
from tensorflow.python.ops import gen_dataset_ops
Run Code Online (Sandbox Code Playgroud)
但我找不到它的定义位置,我希望找到类似的东西:
def gen_dataset_ops(...):
#Do something clever
return
Run Code Online (Sandbox Code Playgroud)
我一般不太了解python模块的解剖结构,所以我可能在这里缺少一些基础知识,..欢迎任何提示!
我正在尝试在 Google Colaboratory 上使用我的自定义包,但在执行此操作时遇到了一些奇怪的错误。请注意,我尝试使用的软件包在我的计算机上没有任何错误。
它是一个名为rohan. 它在功能方面非常基础。
起初我是通过 pip 命令 ( pip install rohan)安装的。但我有一个ModuleNotFoundError错误。
import rohan
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-1-9046ed7b4857> in <module>()
----> 1 import rohan
ModuleNotFoundError: No module named 'rohan'
Run Code Online (Sandbox Code Playgroud)
然后我从源代码安装了它。
%%bash
git clone https://github.com/rraadd88/rohan.git
cd rohan
pip install -e .
Run Code Online (Sandbox Code Playgroud)
这一次,我可以毫无错误地导入主模块 ( import rohan)。但是,如果我尝试导入子模块 ( dandage),则会得到ImportError.
from rohan import dandage
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-5-6ea35256170e> in <module>()
----> 1 from rohan import dandage …Run Code Online (Sandbox Code Playgroud) python python-3.x jupyter-notebook python-packaging google-colaboratory
我有一些来自外部 Python 存储库的代码,我在 Dockerfile 中使用了这些代码。
RUN git clone ssh://git@foobar.com/sample_repo.git /sample_repo
Run Code Online (Sandbox Code Playgroud)
我怎样才能在 Docker 容器中(A)访问所有这些代码;(B) 比 快得多git clone;(C) 在存储库中获取最近的代码更改?
在我走上创建私有 Python 包存储库的道路之前,我想确保我实现了一个与 Docker 和上述所有因素都很好的解决方案。
我想创建一个python zipfile并执行它。
我所做的是,首先创建以下目录和源文件:
\n\n目录树
\n\npkgtest/\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 pkga\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 __main__.py\nRun Code Online (Sandbox Code Playgroud)\n\n__main__.py:
\n\nprint("SADASD")\nRun Code Online (Sandbox Code Playgroud)\n\n__init__.py:空
\n\n此时,我可以这样做:
\n\npython pkga\nRun Code Online (Sandbox Code Playgroud)\n\n它有效,但如果我运行以下命令:
\n\npython -m zipfile -c pkga.zip pkga # This generates a pkga.zip file\npython pkga.zip\nRun Code Online (Sandbox Code Playgroud)\n\n我收到以下错误:
\n\n/usr/bin/python: can\'t find \'__main__\' module in \'pkga.zip\'
我缺少什么?
\n\n这样做:
\n\npython3 -m zipapp pkga\nRun Code Online (Sandbox Code Playgroud)\n\n进而
\n\npython3 pkga.pyz\nRun Code Online (Sandbox Code Playgroud)\n\n有用。
\n\n但是,根据本教程,使用普通的 zip 文件就足够了。它是否正确?
\n如果我安装两个具有相同顶级目录级别名称但不同包名称(由 setup.py 或其他识别方法定义)的 python 包,会发生冲突还是“命名空间”会被合并?
例如,如果我有以下结构:
repo1
mypkg/
__init__.py
compiler/...
setup.cfg -> name=repo1
repo2
mypkg/
__init__.py
runner/...
setup.cfg -> name=repo2
Run Code Online (Sandbox Code Playgroud)
我可以安装这两个而不发生冲突吗?如果是,我可以像这样导入它们吗:
from mypkg.runner import *
from mypkg.compiler import *
Run Code Online (Sandbox Code Playgroud) 构建 Python 包时,我希望构建工具自动执行步骤来生成必要的 Python 文件并将它们包含在包中。
\n以下是有关该项目的一些详细信息:
\n然后该包将上传到 PyPI。
\n我想实现以下目标:
\npython -m build . --wheel,YAML 文件会自动编译为 Python 并包含在包中。需要编译器。我有一个具有以下布局的存储库:
\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 <project>\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 <project>\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 hand_written.py\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 specs\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 file.ksc (YAML file)\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 …Run Code Online (Sandbox Code Playgroud) 我最近创建了一个简单的 python 包/库并将其上传到(PyPI)。没关系 - 我可以将我的项目上传到 pypi 并使用 pip 再次下载它,但我无法导入它,因为它包含一个句号.
我的包被调用dcode.py(这显然会导致导入问题),我想只需键入import dcode(不带)即可导入它.py。我已经四处寻找解决方案,但似乎找不到 - 我希望能够使用别名 ( dcode) 导入它,而不是dcode.py(这显然不起作用)。有没有办法做到这一点?我假设必须有(例如,两个包discord.py和py-cord都可以使用 导入import discord。有谁知道如何做到这一点?
以防万一您需要它,我的pyproject.toml文件如下所示:
[project]
name = "dcode.py"
version = "0.0.2"
authors = [
{ name = "Dylan Rogers", email = "opendylan@proton.me" },
]
description = "dcode - the Python package for everything"
readme = "README.md"
requires-python = ">=2.0"
classifiers = [
"Programming Language :: …Run Code Online (Sandbox Code Playgroud) python-packaging ×10
python ×9
setuptools ×4
setup.py ×2
configparser ×1
docker ×1
dockerfile ×1
langchain ×1
module ×1
openai-api ×1
pip ×1
pypi ×1
python-3.x ×1