StringIO 是我们在从文本中读取Pandas数据帧时使用的类似文件的字符串缓冲区对象,例如“如何从字符串创建 Pandas数据帧?”
我们应该将这两个导入中的哪一个用于 StringIO(在熊猫中)?这是一个长期存在的问题,四年来从未得到解决。
StringIO.StringIO
(Python 2)/ io.StringIO
(Python 3)
pandas.compat.StringIO
builtins, StringIO/cStringIO, BytesIO, cPickle, httplib
、范围、过滤器、映射和 zip 的迭代器版本,以及 Python 3 兼容性的其他必要元素 - 请参阅0.13.0 最新消息用于从标准(来自 EmilH)导入的版本 2/3 分叉代码:
import sys
if sys.version_info[0] < 3:
from StringIO import StringIO
else:
from io import StringIO …
Run Code Online (Sandbox Code Playgroud) 我在名为函数的文件夹中有一个文件 readfunctions.py(在这个文件夹中还有一个“ init .py”文件)。在文件 readfunctions.py 中,我定义了一个名为“read_from_shower”的函数。
./functions
readfunctions.py
__init__.py
Run Code Online (Sandbox Code Playgroud)
所以,我在我的 Google Colab 会话中导入了这个(在我克隆存储库后从 GitHub 中):
from functions.readfunctions import read_from_shower
Run Code Online (Sandbox Code Playgroud)
它工作正常。但是,我对我的函数“read_from_shower”做了一些更改,但我可以在 Colab 中重新加载它。
我该怎么做?
我遇到了一个问题,我的路径别名(例如- import * as fromUsers from '@store/user/user.reducer';
)在 VS Code 中无法识别。(注意 - 编译一切正常)。VS Code 报告“找不到模块‘@store/user/user.reducer’”
我有 a<root>/tsconfig.json
和 a <root>/src/tsconfig.spec.json
,它们看起来像:
tsconfig.json
{
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"declaration": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": ["dom", "es2015"],
"baseUrl": "./src",
"paths": {
"@store/*": ["app/store/*"],
"@core/*": ["app/core/*"],
"@components/*": ["app/components/*"],
"@app/*": ["app/*"],
"@assets/*": ["assets/*"],
"@env": ["environments/environment"],
"@pages/*": ["pages/*"],
"@theme/*": ["theme/*"]
},
"module": "es2015",
"moduleResolution": "node",
"sourceMap": true,
"target": "es5"
},
"include": ["src/**/*.ts"],
"exclude": ["node_modules", "src/**/*.spec.ts", "src/**/__tests__/*.ts"],
"compileOnSave": false,
"atom": {
"rewriteTsconfig": false
}, …
Run Code Online (Sandbox Code Playgroud) 我在使用 Gradle 时遇到问题,我的依赖项下载并包含在“外部库”中就好了,但我无法在 IntelliJ IDEA 中导入它的类。
请看以下图片:
这是我的 build.gradle:
buildscript {
ext.kotlin_version = '1.2.50'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
group 'cf.dogo'
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'kotlin'
apply plugin: 'application'
apply plugin: 'maven'
mainClassName = "cf.dogo.core.boot.BootKt"
sourceCompatibility = 1.8
repositories {
mavenCentral()
jcenter()
maven {url 'https://jitpack.io'}
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-reflect"
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
compile 'net.dv8tion:JDA:3.6.0_376'
compile 'org.mongodb:mongodb-driver:3.6.3'
compile 'com.github.NathanPB:DogoAPI:master-SNAPSHOT' //That one is the problematic dependency
}
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin …
Run Code Online (Sandbox Code Playgroud) 这就是情况。我正在使用 Python 3.6
我目前有下一个文件夹组织:
/MainProject
__init__.py
/Folder1
pyscript1.py
pyscript2.py
__init__.py
/Folder2
pyscript3.py
__init__.py
Run Code Online (Sandbox Code Playgroud)
所以,我试图从 pyscript3 获取一个存在于 pyscript1.py 中的函数。我还在每个级别添加了一个init .py。在 pyscript3.py 中,我尝试了以下操作:
from . import Folder1
Run Code Online (Sandbox Code Playgroud)
给出错误:
ImportError: cannot import name 'Folder1'
Run Code Online (Sandbox Code Playgroud)
我也试过:
from .Utils import script1
Run Code Online (Sandbox Code Playgroud)
给出错误:
ModuleNotFoundError: No module named '__main__.Utils'; '__main__' is not a
package
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过以下方式使用 sys 和 os 解决它:
sys.path.append(os.path.realpath('../..'))
Run Code Online (Sandbox Code Playgroud)
但我想知道不使用 sys.path 是否可行。
Rust 无法通过声明找到本地文件。我在 src 中有以下文件结构:
| main.rs
| lib.rs
| test.rs
| prog.rs
| file.rs
Run Code Online (Sandbox Code Playgroud)
在 main.rs 我有
extern crate cratename;
mod prog;
use cratename::file1::File1;
...
prog::function() // This works
...
#[cfg(test)]
mod test;
Run Code Online (Sandbox Code Playgroud)
在 lib.rs 我有
pub mod file1;
Run Code Online (Sandbox Code Playgroud)
在 test.rs 我有
extern crate cratename
use cratename::file1::File1;
mod prog;
#[test]
...
prog::function() // This does not work
...
Run Code Online (Sandbox Code Playgroud)
我不断收到错误
error[E0583]: file not found for module `prog`
Run Code Online (Sandbox Code Playgroud)
我尝试将声明放在 lib.rs 中,但这没有用。我已经尝试了许多其他涉及此声明以及 main.rs 的排列,但都没有奏效。如果有帮助,prog.rs 不包含结构,也不使用 mod 关键字,它只包含公共函数。这让我难住了一段时间。感谢您的帮助。
列出目录analyse
结构如下:
tree analyse
analyse
??? __init__.py
??? vix.py
Run Code Online (Sandbox Code Playgroud)
该__init__.py
是空白的,vix.py
包含一个函数draw_vix
。
import analyse
analyse.vix.draw_vix()
Run Code Online (Sandbox Code Playgroud)
draw_vix
被引用 analyse.vix.
,我想用vix
而不是引用它,analyse.vix
也就是说,vix
在命名空间之后添加import analyse
。
编辑__init__.py
:
import analyse.vix as vix
from analyse import vix
Run Code Online (Sandbox Code Playgroud)
检查一下:
import analyse
vix.draw_vix()
Run Code Online (Sandbox Code Playgroud)
一条错误信息:
NameError: name 'vix' is not defined
Run Code Online (Sandbox Code Playgroud)
@ hl037_,如果我添加from .vix import vix
的__init__.py
,
import analyse
vix.draw_vix()
Run Code Online (Sandbox Code Playgroud)
它带来了其他问题:ImportError: cannot import name 'vix'。我想要的是写点东西__init__.py
,或者写点东西vix.py
,让它vix.draw_vix()
生效。
如何解决?
如果我import A
在包含A.py
和的目录中执行A.so
此.so
操作,则将导入该文件。我有兴趣更改导入文件类型的顺序,因此它.py
优先于.so
,尽管只是暂时的,即在代码行i
和j
. 这当然可以通过一些 importlib
魔法来实现吗?
目前,我通过将 复制.py
到一个单独的目录中来解决这个问题,将这个目录放在前面sys.path
,然后进行导入,这太糟糕了。
这些.so
文件是文件的 cython 编译版本.py
。我正在 cython 之上进行一些自定义代码转换,.py
即使.so
存在“等效项” ,我也需要导入源代码。
下面是一个简单的测试设置。
# A.py
import B
Run Code Online (Sandbox Code Playgroud)
# B.py
import C
print('hello from B')
Run Code Online (Sandbox Code Playgroud)
# C.py
pass
Run Code Online (Sandbox Code Playgroud)
运行python A.py
成功会打印出来自 的消息B.py
。现在添加B.so
(因为.so
文件的内容无关紧要,B.so
真正成为文本文件就可以了):
# B.so
this is a fake …
Run Code Online (Sandbox Code Playgroud) 完整的错误是:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\grossj\\AppData\\Local\\Temp\\_MEI143642\\tinycss2\\VERSION'
[21148] Failed to execute script main
Run Code Online (Sandbox Code Playgroud)
完整的错误日志是:
Traceback (most recent call last):
File "main.py", line 11, in <module>
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "c:\users\grossj\desktop\dxf-to-png-converter-master\dxf2png\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 489, in exec_module
exec(bytecode, module.__dict__)
File "site-packages\svglib\svglib.py", line 42, in <module>
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", …
Run Code Online (Sandbox Code Playgroud) 我有一个包的以下结构:
/prog
-- /ui
---- /menus
------ __init__.py
------ main_menu.py
------ file_menu.py
-- __init__.py
__init__.py
prog.py
Run Code Online (Sandbox Code Playgroud)
这些是我的导入/类语句:
prog.py
:
from prog.ui.menus import MainMenu
Run Code Online (Sandbox Code Playgroud)
/prog/ui/menus/__init__.py
:
from prog.ui.menus.file_menu import FileMenu
from prog.ui.menus.main_menu import MainMenu
Run Code Online (Sandbox Code Playgroud)
main_menu.py
:
import tkinter as tk
from prog.ui.menus import FileMenu
class MainMenu(tk.Menu):
def __init__(self, master: tk.Tk, **kwargs):
super().__init__(master, **kwargs)
self.add_cascade(label='File', menu=FileMenu(self, tearoff=False))
[...]
Run Code Online (Sandbox Code Playgroud)
file_menu.py
:
import tkinter as tk
from prog.ui.menus import MainMenu
class FileMenu(tk.Menu):
def __init__(self, master: MainMenu, **kwargs):
super().__init__(master, **kwargs)
self.add_command(label='Settings')
[...]
Run Code Online (Sandbox Code Playgroud)
这将导致序列中的循环导入问题:
prog.py
-> …
import ×10
python ×5
module ×3
angular ×1
annotations ×1
dependencies ×1
gradle ×1
javascript ×1
kotlin ×1
mypy ×1
namespaces ×1
pandas ×1
pyqt5 ×1
python-2to3 ×1
python-3.x ×1
rust ×1
stringio ×1
tinycss ×1
type-hinting ×1
typescript ×1