首页 > 编程问答 >强制从当前包自动导入的 Python 以此包的名称为前缀

强制从当前包自动导入的 Python 以此包的名称为前缀

时间:2024-07-23 10:04:53浏览次数:10  
标签:python visual-studio-code import autocomplete

我在 VSCode 中使用 Python 和 Pylance 扩展。

在我正在编辑的自己的包中,自动添加的导入(设置“导入格式:绝对”)如下所示:

from mydirectory.myfile import myclass

但是,我的 Python 包正在被被一个(非常愚蠢且不可协商的)外部系统消耗,该系统拒绝正确解释它,除非导入的格式特别像:

from mypackage.mydirectory.myfile import myclass

那么我如何强制 VSCode 以确切的格式自动完成这些导入?

I已经尝试了许多与导入、格式化、Python、Pylance 等相关的 VSC 设置,但到目前为止,它们都没有达到我的需要。我怀疑也许需要一些手动强制的前缀? (我只有一个包,因此最好使用特定字符串对这样的前缀进行硬编码。)


很不幸,VSCode 和 Pylance 没有直接的设置可以强制从当前包导入时始终添加包名前缀。

不过,你可以尝试以下几种方法来解决这个问题:

1. 使用代码格式化工具并配置其规则:

  • autopep8: autopep8 默认不会添加包名前缀,但你可以使用 --aggressive 参数多次运行它来尝试达到目的。例如: bash autopep8 --aggressive --aggressive myfile.py
  • YAPF: YAPF 也可用于格式化代码,但它也没有直接添加包名前缀的选项。你可能需要自定义其样式规则来实现这一点。

2. 使用代码生成工具:

  • 你可以编写一个简单的脚本,扫描你的 Python 文件,识别来自当前包的导入,并自动添加包名前缀。

3. 创建自定义的 VSCode 扩展:

  • 这是一个更复杂的选择,但它可以为你提供最大的灵活性。你可以创建一个 VSCode 扩展,监听代码完成事件,并在需要时添加包名前缀。

4. 修改外部系统(如果可能):

  • 最好的解决方案是修改外部系统,使其能够正确解析不带包名前缀的导入。如果可以修改外部系统的代码或配置,这将是最干净和最持久的解决方案。

一些额外的建议:

  • 确保你的包结构符合 Python 的规范,并且 __init__.py 文件存在于每个包目录中。
  • 在你的项目中使用 setup.py 文件,并使用 find_packages() 函数来正确定义你的包结构。

希望这些方法能帮助你解决这个问题。

标签:python,visual-studio-code,import,autocomplete
From: 78779795

相关文章

  • Python语言-面向对象
    知识代码classJobSalary(object):job=''def__init__(self,city):self.jobname="数据分析师"self.exp=''self.city=city#方法defdata_normalize(self,data):print(f'正在规范化......
  • 需要帮助使用 Selenium Python 单击 Microsoft Teams 按钮
    我将Python与Selenium结合使用,并自动登录MicrosoftTeams。进入后,弹出窗口显示我需要单击“立即切换”以切换到V2版本。我似乎无法使用SeleniumPython成功单击此按钮。谁能帮我自动点击这个按钮?这是我不成功的尝试:self.driver.find_element(By.CLASS_NAME,......
  • python接口自动化(四十)- logger 日志 - 下(超详解)
    宏哥微信粉丝群:https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入 1.简介按照上一篇的计划,这一篇给小伙伴们讲解一下:(1)多模块使用logging,(2)通过文件配置logging模块,(3)自己封装一个日志(logging)类。可能有的小伙伴在这里会有个疑问一个logging为什么分两篇的篇幅......
  • Python面试题:使用NumPy进行高效数组运算
    NumPy是Python中进行高效数组运算的基础库。以下是一些示例,展示了如何使用NumPy进行高效的数组运算,包括创建数组、数组操作、数学运算以及一些高级操作。安装NumPy如果你还没有安装NumPy,可以通过以下命令进行安装:pipinstallnumpy示例代码1.创建数组import......
  • Python面试题:使用Matplotlib和Seaborn进行数据可视化
    使用Matplotlib和Seaborn进行数据可视化是数据分析中非常重要的一部分。以下示例展示了如何使用这两个库来创建各种图表,包括基本的线图、柱状图、散点图和高级的分类数据可视化图表。安装Matplotlib和Seaborn如果你还没有安装这两个库,可以使用以下命令进行安装:pipins......
  • 20、Python之容器:红楼主角都有谁?10行代码生成《红楼梦》词云图
    引言Python系列前面的文章中,我们介绍了Python中容器的基本使用,上一篇中,我们又重点介绍了Counter计数器的使用。这些介绍,应该足以应付日常的工作需求了。在今天的文章中,我想以词云图的生成这个综合案例,巩固一下前面关于容器、字典推导式、Counter的使用。同时,介绍两个比较好......
  • 使用snowflake.connector 3.0.3上的密钥对从python连接到snowflake
    我正在尝试使用Snowflake.connector包从我的Python代码连接到Snowflake。不幸的是,由于遗留代码,我只能在python3.7.3上使用Snowflake连接器版本3.0.3,并且无法升级我确实设法从我自己的计算机进行连接,使用:con=Snowflake.connector。连接(...私有密钥文件=......
  • python 文件(txt)操作
    我有一个txt文件,其中包含一列(大约2000个)单词。每个单词只用一个新行分隔。我想将所有这些单词存储在一个数组中words.txt文件的示例:applebananaorange我尝试过的代码:importrandomwithopen('E:/Code/learn/Projects/word-guessing-game/words.txt','r')a......
  • matplotlib与Python不兼容问题
    “我使用的是Matplotlib版本3.7.2。Anaconda的Spyder中的Python版本是3.8.18。当我运行importmatplotlib.pyplotasplt行时,出现错误module'matplotlib'hasnoattribute'rcParams'。当我尝试将Matplotlib和matplotlib.base包从当前的3.7.2版本升级到3.8......
  • 使用 json 配置文件进行 Python 日志记录
    我玩弄了日志模块,发现了一些我不太清楚的事情。首先,因为这是一个大程序,我希望代码尽可能简单,因此我使用了json配置文件.{"version":1,"disable_existing_loggers":false,"formatters":{"simple":{"format":"%(asctime)s-%(name)s......