我在 Docker 容器中开发了一个 Flask 应用程序。我的代码的最小示例具有以下结构:
+- myproject
+- Flask-App
+- src
+- __init__.py
+-__init__.py
+- Dockerfile
+- requirements.txt
+- wsgi.py
+- docker-compose.yml
Run Code Online (Sandbox Code Playgroud)
我使示例更加简约(请参阅第二次编辑)
由于我目前正在开发该应用程序,因此我想将其src作为卷添加到我的容器中。如果不安装卷,我每次都必须重建容器。每当我添加卷时,都会引发此错误:
Attaching to flask
flask | Traceback (most recent call last):
flask | File "wsgi.py", line 1, in <module>
flask | from src import create_app
flask | ImportError: cannot import name 'create_app' from 'src' (unknown location)
flask exited with code 1
Run Code Online (Sandbox Code Playgroud)
如果没有volume中的命令docker-compose.yml,代码就会运行。你能解释一下我该如何规避这个问题吗?
docker-compose.yml
version: '3.1'
services:
flask:
build:
context: ./Flask-App
dockerfile: …Run Code Online (Sandbox Code Playgroud) 我从 PyCharm 切换到 VSCode。现在,我在导入同一包中的模块时遇到问题。
主要.py
from importlib_resources import files
import household_prices.data.raw_data as raw_data # <- moudle not found
source = files(raw_data).joinpath("household_price.csv")
df = pd.read_csv(source)
Run Code Online (Sandbox Code Playgroud)
我认为这与 python 路径有关。当我调用sys.pathPyCharm 时,我同时拥有~/code/household_prices/household_prices/analysis和~/code/household_prices/household_prices。
VSCode 中缺少第二条路径。有没有一种自动方法可以始终在 python 路径中包含包的根目录?
文件夹结构
* household_prices
* .idea
* household_prices
* analysis
* __init__.py
* main.py
* data/
* __init__.py
* raw_data/
* __init__.py
* household_price.csv
* README.md
Run Code Online (Sandbox Code Playgroud) 我知道如何绑定属性,但是如何绑定函数的调用呢?
例如:我有一个ObjectProperty指向文件的。现在,我想将路径绑定到其文件夹?如果值ObjectProperty是C:\\user\Desktop\text.txt,接合应指向C:\\user\Desktop。
我以为我可以getParentFile()在绑定内调用。
每当我尝试在 Windows 10 上的 VSCode 中激活 conda 时,都会收到一条初始化 shell 的消息。
我尝试了以下方法
conda init bash并重新启动 VSCodeconda.bat activate-> 没有变化。which python仍然指向/c/Users/user/anaconda3/pythonconda init bash我认为问题出在 VSCode 中,因为我可以conda从 cmd、powershell、gitbash 和 PyCharm 终端中激活。
我错过了什么吗?
$ conda activate data_science
CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
If using 'conda activate' from a batch script, change your
invocation to 'CALL conda.bat activate'.
To initialize your shell, run …Run Code Online (Sandbox Code Playgroud)