有没有办法让一个python项目拥有两个虚拟环境?

问题描述 投票:0回答:2

我当前的 python 项目遇到了问题。

我编写的用于连接 Sharepoint 的 API 需要在 64 位 python 中运行。 并且 Oracle API 需要从 python 32 位运行(因为服务器问题)。

当我单独运行脚本时(每个脚本都有自己的 venv),一切都运行完美。

但是,当我在32位代码中导入sharepoint脚本时,它给出了错误。 当将 oracle 脚本导入 Sharepoint 代码时,情况也相反。

注意:当我引用 import 时,它将导入另一个 python 文件作为模块:

    from oracle import OracleCon
    from sharepoint import SharePointCon

sharepoint 连接字符串:

'Provider = Microsoft.ACE.OLEDB.12.0; WSS;IMEX= 2;RetrieveIds=Yes; DATABASE=site_url; LIST= list_id'

我尝试配置两个虚拟环境,但在导入另一个Python文件时没有成功。 还尝试了不同的连接字符串与 Sharepoint 交互,但没有成功:

'Provider = Microsoft.JET.OLEDB.4.0; WSS;IMEX= 2;RetrieveIds=Yes; DATABASE=site_url; LIST= list_id'

需要: 或者找到一种可靠的方法来运行两个版本的 python。 或者找到一种在 32 位 Python 中连接到 Sharepoint 的方法。

python python-3.x 64-bit 32-bit
2个回答
0
投票

在同一个进程中运行两个不同的Python版本(32位和64位)是不可行的。在大多数情况下,您无法同时加载 32 位和 64 位库和 DLL,因此在同一进程中拥有两个不同的 Python 环境是不切实际的。

解决问题的一种可能方法是让 32 位和 64 位组件通过中间进程或服务进行通信。具体方法如下:

创建两个单独的脚本,一个用于 32 位组件 (Oracle),另一个用于 64 位组件 (Sharepoint)。

创建 API 服务或作为独立进程运行的单独脚本,它可以与 32 位和 64 位组件通信。该服务可以充当应用程序两部分之间的桥梁。

API 服务应公开 32 位和 64 位组件进行交互的端点或方法。这可以使用 REST API、消息队列或任何其他合适的进程间通信 (IPC) 机制等技术来完成。

在 32 位和 64 位脚本中,使用库或模块向 API 服务发出请求以进行数据交换。

API 服务将处理来自两个组件的请求并协调它们之间的数据交换。

这种方法将 32 位和 64 位组件解耦,允许它们在单独的环境中运行,同时仍然使它们能够有效地通信。它可能需要一些额外的开发和设置,但它应该提供一种可靠的方法来连接应用程序的两个部分。

对于在 32 位 Python 中连接到 Sharepoint,您可能想要探索与 32 位 Python 兼容的替代库或方法。不幸的是,某些库和驱动程序可能有特定要求,您可能需要查阅 Sharepoint 的官方文档或支持渠道才能找到适合 32 位 Python 的解决方案。


0
投票

运行两个通过网络通信的 docker 容器可能是更好的方法。一个用于共享点,另一个用于 Oracle API。

© www.soinside.com 2019 - 2024. All rights reserved.