我有一个名为 websocket 的模块。对于这个模块,我想要一些测试,并且对于这些测试,我pip install需要适当的模块。问题是安装的模块与我自己的模块具有完全相同的名称。
项目结构:
websocket-server
|
|---- websocket.py
|
'---- tests
|
'---- test.py
Run Code Online (Sandbox Code Playgroud)
测试.py:
from websocket import WebSocketsServer # my module
from websocket import create_connection # installed module
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个问题:
websocket.py)__init__()有人告诉我,这样做并不是一个很好的做法(尽管它存在于Python 模式的主要答案中,用于在整个应用程序中共享配置):
SOUNDENABLED = 1
FILEPATH = 'D:\\TEMP\\hello.txt'
Run Code Online (Sandbox Code Playgroud)
import configfile
if configfile.SOUNDENABLED == 1:
....
f = open(configfile.FILEPATH, 'a')
...
Run Code Online (Sandbox Code Playgroud)
许多人使用 INI 文件通过ConfigParser模块或iniparse或其他类似模块进行本地配置这一事实证实了这一点。
configfile.py问题:为什么使用 INI 文件进行本地配置 + INI 解析器 Python 模块比仅导入包含正确配置值作为常量的文件更好?
与__init__.py在目录中,我能够将其导入
from subdirectory.file import *
Run Code Online (Sandbox Code Playgroud)
但我希望导入该子目录中的每个文件;所以我试过了
from subdirectory.* import *
Run Code Online (Sandbox Code Playgroud)
这不起作用。有什么建议?
为了说明我正在尝试做什么,假设我有一个testmod位于./testmod.py. 这个模块的全部内容是
x = test
Run Code Online (Sandbox Code Playgroud)
我希望能够使用任何可用的工具importlib或任何其他内置库成功地将此模块导入 Python 。
显然import testmod从当前目录做一个简单的语句会导致错误:NameError: name 'test' is not defined.
我想,也许无论是传球globals还是locals要__import__正确地将修改剧本正在运行的内部环境,但事实并非如此:
>>> testmod = __import__('testmod', globals={'test': 'globals'}, locals={'test': 'locals'})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/jfoxrabi/testmod.py", line 1, in <module>
x = test
NameError: name 'test' is not defined
Run Code Online (Sandbox Code Playgroud)
我以不同的方式设置了 test 的值,这样我就可以看到testmod.x如果这行得通,我可以看到哪个 dict来自。
由于这些似乎都不起作用,我被卡住了。甚至有可能完成我想要做的事情吗?我猜是的,因为这是 Python,而不是 Sparta。
我在 Anaconda 上使用 …
我正在编写一个运行一些模拟的Python脚本,但它需要很多输入参数(大约20个).所以我想把所有模拟参数都包含在外部文件中.这样做最简单的方法是什么?
我发现的一个答案是Stack Overflow问题如何在给定完整路径的情况下导入模块?,将所有模拟参数放在parm.py文件中,并使用imp包导入该模块.
这将允许运行此脚本的用户提供任何文件作为输入.如果我以这种方式导入模块:
parm = imp.load_source('parm', '/path/to/parm.py')
Run Code Online (Sandbox Code Playgroud)
那么所有参数都必须被引用为
parm.p1, parm.p2
Run Code Online (Sandbox Code Playgroud)
但是,我想在我的脚本中将它们称为p1,p2等.有没有办法做到这一点?
我有一个这样的目录结构:
python-functions/
--src
---- | api/
-------- | __init__.py
-------- | main.py
---- | __init__.py
---- | main.py
Run Code Online (Sandbox Code Playgroud)
我试图在 src/main.py 中定义所有函数,但在其相应的文件夹中有实现
python-functions/
--src
---- | api/
-------- | __init__.py
-------- | main.py
---- | __init__.py
---- | main.py
Run Code Online (Sandbox Code Playgroud)
# src/main.py
import src.api.main as api
@https_fn.on_request(timeout_sec=300)
def status(req: https_fn.Request) -> https_fn.Response:
return api.status(req)
Run Code Online (Sandbox Code Playgroud)
但是在部署时我收到此错误:
# Importing like: import src
ModuleNotFoundError: No module named 'src'
127.0.0.1 - - [18/May/2023 00:09:43] "GET /\_\_/functions.yaml HTTP/1.1" 500 -
Error: Failed to parse build specification:
- …Run Code Online (Sandbox Code Playgroud) python firebase google-cloud-platform firebase-tools google-cloud-functions
我试图在另一个python脚本中调用python脚本.目录是不同的.我试过了
import subprocess
subprocess.call("C:\temp\hello2.py", shell=True)
Run Code Online (Sandbox Code Playgroud)
但什么也没得到.这是行不通的.我回顾了很多论坛,但是当两个脚本都在同一个目录上时,它们都是关于调用它的.
我尝试在同一目录中同时使用这两个脚本.在这种情况下,我可以在Python.exe(通过cmd窗口)中运行模型,但不能在IDLE中运行.在IDLE中,我甚至没有收到错误消息.
我真的需要这样做,这样我就无法将其他脚本定义为不同的模块等.我需要在另一个脚本中调用脚本.
我有许多 python 文件,它们都具有相同的变量名但值不同。像这样的东西将合二为一:
var_one = 'happy'
var_two = '2345'
var_three = '-24.24'
var_four = 'Chocolate'
Run Code Online (Sandbox Code Playgroud)
我需要编写一个可以读取这些文件的 Python 脚本,当我要求var_one它返回happy. 如果我要求var_two它返回2345等等。
现在我有一个 python 两个兼容的工具箱,它使用以下内容执行此操作:
for fname in myfile:
d = toolbox.datafile(fname)
my_mood = d['var_one']
number = d['var_two']
decimal = d['var_three']
candy = d['var_four']
Run Code Online (Sandbox Code Playgroud)
然后打印my_mood将打印出来happy。
但是,这个工具箱不符合 python 3,我没有制作它,所以我想知道是否有一个简单的内置工具箱可以完成这个任务。
提前致谢
编辑**
导入方法似乎对回答这个问题最有帮助。我现在唯一的问题是我不知道如何导入文件。
为了进一步解释,我将解析命令行参数,其中一个参数是我们要导入的所述文件的位置。导入它的语法是什么?
我有一个args.file等于<home/myname/python/myfile.py>
那么我将如何导入args.file?
python ×7
python-3.x ×2
call ×1
firebase ×1
import ×1
importerror ×1
ini ×1
parsing ×1
subprocess ×1