【问题标题】:How to set PATH before imports occur in a nice way?如何在导入之前以一种很好的方式设置 PATH?
【发布时间】:2018-05-14 12:41:11
【问题描述】:

我有一个使用 openslide-python 的 Python 脚本。

openslide-python 要求 OpenSlide binaries are in the DLL search path on Windows。

我计划将来分发我的应用程序,我不希望用户下载 OpenSlide 二进制文件并设置 PATH。因此,我将在我的应用程序中包含 OpenSlide 二进制文件。

问题是必须在从 OpenSlide 进行任何导入之前设置 PATH。

目前我有以下代码(用*简化):

import os
from io import *

os.environ['PATH'] = os.path.dirname(os.path.realpath(__file__)) + os.sep + 'openslide' + os.pathsep + os.environ[
    'PATH']

from openslide import *

我意识到它与 PEP 8 不对应,因为我的模块级导入不在文件顶部。

有什么好的方法吗?

【问题讨论】:

  • 使用sys.path.append()?
  • @TuwuhS 在从openslide导入东西之前仍然必须发生,对吧?如果是,那么它不会改变任何东西。
  • 是的,为什么你认为这是个问题?
  • @TuwuhS 据我了解,根据 PEP 8 我有类似的东西:import osfrom io import *from openslide import *sys.path.append('...')
  • 我明白你的意思。这可能会帮助你stackoverflow.com/a/36829884/6102131(编辑:链接到答案)

标签: python windows python-import openslide


【解决方案1】:

创建文件my_path_helper.py:

os.environ['PATH'] = os.path.dirname(os.path.realpath(__file__)) + os.sep + 'openslide' + os.pathsep + os.environ[
    'PATH']

并将其放入与您的脚本相同的目录中。 现在导入它:

import os
from io import *

import my_path_helper

from openslide import *

这仍然有点违反 PEP8,因为它在第三方模块 openslide 之前导入您自己的模块。但是所有导入都在脚本的顶部。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 2023-01-17
    • 2017-11-23
    • 2021-12-13
    • 2012-10-27
    • 2015-03-04
    • 2016-05-26
    相关资源
    最近更新 更多