samudradev / samudra Goto Github PK
View Code? Open in Web Editor NEWAplikasi ringkas mengurus istilah
Home Page: https://samudradev.github.io/samudra/
Aplikasi ringkas mengurus istilah
Home Page: https://samudradev.github.io/samudra/
Poetry v 1.1.14
Python v 3.10.5
Windows 10
Error bila run guna poetry run python ./samudra/serve.py
D:\samudra>poetry run python ./samudra/serve.py
Traceback (most recent call last):
File "D:\samudra\samudra\serve.py", line 3, in
import uvicorn
ModuleNotFoundError: No module named 'uvicorn'
Module dah install. Sebab bila run direct python ./samudra/serve.py
D:\samudra>python samudra/serve.py
Traceback (most recent call last):
File "D:\samudra\samudra\serve.py", line 8, in
from samudra.conf.server.cors_policy import ALLOWED_ORIGINS
ModuleNotFoundError: No module named 'samudra'
ALLOWED_ORIGINS ni merujuk kepada localhost:3000 kan? Masih tak nampak perkaitan lagi kat mana untuk selesaikan.
Model Petikan
merupakan sepotong ayat yang menunjukkan penggunaan suatu lema dalam maksud tertentu.
Ia bertujuan menjadi bukti catatan wujudnya penggunaan tersebut.
Persoalannya sekarang, bagaimana mahu menyimpan maklumat bibliografi yang pelbagai jenis dalam jadual jenis SQL?
Lihat cara Zotero dan Calibre menyusun maklumat bibliografi masing-masing.
Sifat kedua-dua perisian ini yang mengurus bahan bacaan dari pelbagai dan bersumber terbuka merupakan calon yang baik untuk kita cuba bongkar jadual SQLite masing-masing. Boleh cuba faham kod untuk model masing-masing, atau gunakan pwiz untuk menterjemahkan jadual SQLite mereka menjadi model Peewee. Model yang terhasil boleh jadi panduan kepada model bibliografi petikan Samudra.
Tambah CLI untuk berhubung terus dengan kod sekiranya ia dipasang dalam komputer sendiri.
Wujudkan dokumentasi kod yang ringkas supaya memudahkan penyumbang baharu
Untuk multimedia, seperti gambar, video atau gif, lebih sesuai simpan di satu tempat pelayan simpanan multimedia dan hanya isi pautannya ke dalam pangkalan data. Perlu bangunkan kaedah ini.
Originally posted by mshumayl October 25, 2022
Saya mendapati ralat ketika cuba memasang samudra. Saya kemukakan ralat ini dalam bahagian 'discussion' ini untuk memahami lebih lanjut tentang pemasangan dan di mana saya tersalah. Saya pasti saya terlepas pandang sesuatu yang jelas, jadi saya amat menghargai sebarang penunjuk dari tuan/puan.
Terima kasih terlebih dahulu atas penerangan dan masa tuan/puan.
Ralat AttributeError: module 'samudra.models' has no attribute 'TABLES'
muncul setelah membuat beberapa perubahan untuk memasang cabang master
samudra (commit 79b6a76ff7d46814a9c9992a9d4f82fe7cee7048
). Berikut merupakan perubahan yang dilakukan.
$ git clone https://github.com/Thaza-Kun/samudra.git samudra
seperti diperincikan dalam Pemasangan.ACCESS_TOKEN_EXPIRE_MINUTES
kepada 10 minit:# ./.env
# Buat masa sekarang ada tiga enjin: SQLite, MySQL, dan CockroachDB.
# SQLite sesuai untuk aplikasi lokal dan hanya satu pengguna.
# Yang lain memerlukan pelayan
ENGINE = SQLite
# Yang ini adalah nilai yang diperlukan untuk daftar masuk pelayan DB
# (Tidak perlu kalau pilih enjin SQLite)
DATABASE_USERNAME =
DATABASE_PASSWORD =
# Maklumat pelayan DB
# (Tidak perlu kalau pilih enjin SQLite)
DATABASE_NAME =
DATABASE_HOST =
DATABASE_PORT =
DATABASE_OPTIONS =
# Tempoh masa pengguna dibenarkan log masuk (dalam sukatan minit)
# (Wajib walaupun pilih enjin SQLite)
ACCESS_TOKEN_EXPIRE_MINUTES = 10
$ poetry run python ./samudra/serve.py
, dan ralat dibawah akan muncul:Traceback (most recent call last):
File "Z:\Noconda\samudra\samudra\serve.py", line 12, in <module>
from samudra.server.setup import check_tables
File "Z:\Noconda\samudra\samudra\server\__init__.py", line 4, in <module>
from .routes import lemmas, auth, golongan_kata
File "Z:\Noconda\samudra\samudra\server\routes\lemmas.py", line 7, in <module>
from samudra.server.dependencies import get_db
File "Z:\Noconda\samudra\samudra\server\dependencies.py", line 4, in <module>
from samudra.server.setup import SERVER_DATABASE
File "Z:\Noconda\samudra\samudra\server\setup.py", line 7, in <module>
from samudra.conf.database.core import ENGINE
ImportError: cannot import name 'ENGINE' from 'samudra.conf.database.core' (.\samudra\samudra\conf\database\core.py)
16
dan 17
) berikut di \samudra\samudra\conf\database\core.py
:# ENGINE = settings.get("database").get("engine", None)
# DATABASE_NAME = settings.get("database").get("name", "samudra")
$ poetry run python ./samudra/serve.py
lagi, ralat kemudiannya akan muncul:Traceback (most recent call last):
File "Z:\Noconda\samudra\samudra\serve.py", line 12, in <module>
from samudra.server.setup import check_tables
File "Z:\Noconda\samudra\samudra\server\__init__.py", line 4, in <module>
from .routes import lemmas, auth, golongan_kata
File "Z:\Noconda\samudra\samudra\server\routes\lemmas.py", line 7, in <module>
from samudra.server.dependencies import get_db
File "Z:\Noconda\samudra\samudra\server\dependencies.py", line 4, in <module>
from samudra.server.setup import SERVER_DATABASE
File "Z:\Noconda\samudra\samudra\server\setup.py", line 11, in <module>
SERVER_DATABASE: pw.Database = get_database(engine=DatabaseEngine[ENGINE])
TypeError: get_database() missing 1 required positional argument: 'db_name'
db_name
dalam panggilan fungsi get_database
tersebut di baris 11
dalam fail .\samudra\samudra\server\setup.py
:SERVER_DATABASE: pw.Database = get_database(engine=DatabaseEngine[ENGINE], db_name='samudra_local')
$ poetry run python ./samudra/serve.py
, ralat seterusnya muncul:Traceback (most recent call last):
File "Z:\Noconda\samudra\samudra\serve.py", line 12, in <module>
from samudra.server.setup import check_tables
File "Z:\Noconda\samudra\samudra\server\__init__.py", line 4, in <module>
from .routes import lemmas, auth, golongan_kata
File "Z:\Noconda\samudra\samudra\server\routes\lemmas.py", line 7, in <module>
from samudra.server.dependencies import get_db
File "Z:\Noconda\samudra\samudra\server\dependencies.py", line 4, in <module>
from samudra.server.setup import SERVER_DATABASE
File "Z:\Noconda\samudra\samudra\server\setup.py", line 11, in <module>
SERVER_DATABASE: pw.Database = get_database(engine=DatabaseEngine[ENGINE], db_name='samudra_local')
File "Z:\Noconda\samudra\samudra\conf\database\core.py", line 36, in get_database
return create_sqlite(folder=db_name, path=kwargs.pop("path"), **kwargs)
KeyError: 'path'
site/local
, dan meletakkan path ini kepada argumen path
dalam panggilan fungsi get_database
yang sama (baris 11
):SERVER_DATABASE: pw.Database = get_database(engine=DatabaseEngine[ENGINE], db_name='samudra_local', path=r'Z:\Noconda\samudra\site\local')
$ poetry run python ./samudra/serve.py
lagi sekali, sebuah README.md fail akan dijana di Z:\Noconda\samudra\site\local\samudra_local
, dan kita tiba kepada ralat seperti di tajuk:Traceback (most recent call last):
File "Z:\Noconda\samudra\samudra\serve.py", line 40, in <module>
check_tables(create_tables=True)
File "Z:\Noconda\samudra\samudra\server\setup.py", line 26, in check_tables
for TABLE in models.TABLES:
AttributeError: module 'samudra.models' has no attribute 'TABLES'
Berikut merupakan kandungan Z:\Noconda\samudra\site\local\samudra_local\README.md
:
# Samudra_Local
Created using [samudra](https://github.com/samudradev/samudra)
TABLES
dan JOIN_TABLES
dalam \samudra\samudra\models\__init__.py
, dan uvicorn akan mula melayan. Tetapi ini terlalu jelik sebagai penyelesaian, dan akan menyebabkan ralat 'circular reference' seperti berikut:INFO: Will watch for changes in these directories: ['Z:\\Noconda\\samudra']
INFO:uvicorn.error:Will watch for changes in these directories: ['Z:\\Noconda\\samudra']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:uvicorn.error:Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [19260] using StatReload
INFO:uvicorn.error:Started reloader process [19260] using StatReload
Traceback (most recent call last):
File "Z:\Noconda\samudra\samudra\conf\database\core.py", line 79, in create_sqlite
base_path.mkdir(parents=True)
File "Z:\Miniconda3\lib\pathlib.py", line 1312, in mkdir
self._accessor.mkdir(self, mode)
FileExistsError: [WinError 183] Cannot create a file when that file already exists: 'Z:\\Noconda\\samudra\\site\\local\\samudra_local'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "Z:\Miniconda3\lib\multiprocessing\spawn.py", line 116, in spawn_main
exitcode = _main(fd, parent_sentinel)
File "Z:\Miniconda3\lib\multiprocessing\spawn.py", line 125, in _main
prepare(preparation_data)
File "Z:\Miniconda3\lib\multiprocessing\spawn.py", line 236, in prepare
_fixup_main_from_path(data['init_main_from_path'])
File "Z:\Miniconda3\lib\multiprocessing\spawn.py", line 287, in _fixup_main_from_path
main_content = runpy.run_path(main_path,
File "Z:\Miniconda3\lib\runpy.py", line 268, in run_path
return _run_module_code(code, init_globals, run_name,
File "Z:\Miniconda3\lib\runpy.py", line 97, in _run_module_code
_run_code(code, mod_globals, init_globals,
File "Z:\Miniconda3\lib\runpy.py", line 87, in _run_code
exec(code, run_globals)
File "Z:\Noconda\samudra\samudra\serve.py", line 12, in <module>
from samudra.server.setup import check_tables
File "Z:\Noconda\samudra\samudra\server\__init__.py", line 4, in <module>
from .routes import lemmas, auth, golongan_kata
File "Z:\Noconda\samudra\samudra\server\routes\lemmas.py", line 7, in <module>
from samudra.server.dependencies import get_db
File "Z:\Noconda\samudra\samudra\server\dependencies.py", line 4, in <module>
from samudra.server.setup import SERVER_DATABASE
File "Z:\Noconda\samudra\samudra\server\setup.py", line 11, in <module>
SERVER_DATABASE: pw.Database = get_database(engine=DatabaseEngine[ENGINE], db_name='samudra_local', path=r'Z:\Noconda\samudra\site\local')
File "Z:\Noconda\samudra\samudra\conf\database\core.py", line 36, in get_database
return create_sqlite(folder=db_name, path=kwargs.pop("path"), **kwargs)
File "Z:\Noconda\samudra\samudra\conf\database\core.py", line 88, in create_sqlite
raise FileExistsError(
FileExistsError: The path `Z:\Noconda\samudra\site\local\samudra_local` is already occupied with something else. Consider using other folder.
Z:\Noconda\samudra\site\local\samudra_local.sqlite
, dan ini juga tidak dapat menyelesaikan ralat ini.Jikalau tuan/puan perlukan butiran lanjut tentang ralat ini, boleh beritahu saya. Maaf terlebih dahulu jika saya terlepas pandang sesuatu yang jelas.
Terima kasih lagi sekali atas masa tuan/puan serta usaha tuan/puan membangunkan samudra.
Saya cuba untuk upgrade pakej menggunakan poetry, tetapi gagal.
Berikut adalah maklumat yang berkaitan:
OS - OSX Monterey 12.5
Versi Python - 3.9.4
Versi Poetry - 1.1.14
poetry install
mysqlclient
• Installing mysqlclient (2.1.1): Failed
EnvCommandError
Command ['/Users/alserembani/Library/Caches/pypoetry/virtualenvs/samudra-w3fVXaJ--py3.9/bin/pip', 'install', '--no-deps', 'file:///Users/alserembani/Library/Caches/pypoetry/artifacts/2d/90/d6/339cd2c929c6d8a54167285d71ca5d4c6996063ebeba2e43a6d5e3f698/mysqlclient-2.1.1.tar.gz'] errored with the following return code 1, and output:
Processing /Users/alserembani/Library/Caches/pypoetry/artifacts/2d/90/d6/339cd2c929c6d8a54167285d71ca5d4c6996063ebeba2e43a6d5e3f698/mysqlclient-2.1.1.tar.gz
Preparing metadata (setup.py): started
Preparing metadata (setup.py): finished with status 'error'
error: subprocess-exited-with-error
× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [16 lines of output]
/bin/sh: mysql_config: command not found
/bin/sh: mariadb_config: command not found
/bin/sh: mysql_config: command not found
Traceback (most recent call last):
File "<string>", line 2, in <module>
File "<pip-setuptools-caller>", line 34, in <module>
File "/private/var/folders/93/vjskgv4j0nx3sqqwnb4wpwmw0000gn/T/pip-req-build-hkh5lbs5/setup.py", line 15, in <module>
metadata, options = get_config()
File "/private/var/folders/93/vjskgv4j0nx3sqqwnb4wpwmw0000gn/T/pip-req-build-hkh5lbs5/setup_posix.py", line 70, in get_config
libs = mysql_config("libs")
File "/private/var/folders/93/vjskgv4j0nx3sqqwnb4wpwmw0000gn/T/pip-req-build-hkh5lbs5/setup_posix.py", line 31, in mysql_config
raise OSError("{} not found".format(_mysql_config_path))
OSError: mysql_config not found
mysql_config --version
mariadb_config --version
mysql_config --libs
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed
× Encountered error while generating package metadata.
╰─> See above for output.
note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
WARNING: You are using pip version 22.0.3; however, version 22.2.2 is available.
You should consider upgrading via the '/Users/alserembani/Library/Caches/pypoetry/virtualenvs/samudra-w3fVXaJ--py3.9/bin/python -m pip install --upgrade pip' command.
at ~/.poetry/lib/poetry/utils/env.py:1195 in _run
1191│ output = subprocess.check_output(
1192│ cmd, stderr=subprocess.STDOUT, **kwargs
1193│ )
1194│ except CalledProcessError as e:
→ 1195│ raise EnvCommandError(e, input=input_)
1196│
1197│ return decode(output)
1198│
1199│ def execute(self, bin, *args, **kwargs):
Supaya ada data dari kamus sedia ada yang boleh kita guna untuk kembangkan model (bukan untuk ambil data mereka ke dalam pangkalan data kita)
Apabila melakukan import untuk modul samudra.conf
daripada direktori samudra/tests
, poetry run pytest
akan mengeluarkan ImportError
kerana terdapat beberapa import relatif dalam modul samudra.conf
.
Terdapat dua kaedah untuk menyelesaikan isu ini.
samudra.conf
kepada import mutlak (absolute).pythonpath
untuk pytest dalam pyproject.toml
di root
. Ini akan dapat menyelesaikan masalah ini untuk semua import relatif dalam projek ini.Gunakan /test/
untuk uji laluan menggunakan client yang disediakan FastAPI
Berikut adalah cara pemasangan yang kini ada di Readme
.
Pemasangan
- Python 3.8 atau lebih
- Guna [poetry](https://python-poetry.org/docs/) (digalakkan)
- poetry install
Saya telah mengikut cara pemasangan berikut dan menerima ralat berikut.
Traceback (most recent call last):
File "/home/afiq/Documents/git_clone/samudra/samudra/serve.py", line 3, in <module>
import uvicorn
ModuleNotFoundError: No module named 'uvicorn'
Adakah cara pemasangan tidak lengkap, atau saya tersilap langkah?
Saya juga tertanya jika saya perlu pasang Mysql ke sistem saya terlebih dahulu, kerana ianya tidak dinyatakan di Readme
.....
Export maklumat lemma, maksud2nya serta metadata terpilih menjadi gambar supaya mudah dikongsi ke tempat lain.
Buat masa ini, data API untuk senarai cakupan dan kata asing berbentuk begini:
{
"lemma": "foo",
"konsep": "bar",
"cakupan": [
{"cakupan": "foobar"}
],
"kata_asing": [
{"kata_asing": "barfoo"}
]
}
Cakupan berganda cakupan['cakupan']
(dan kata_asing berganda) kelihatan tidak kemas. Sekurang-kurangnya saya mahu elakkan cakupan berganda:
{
"lemma": "foo",
"konsep": "bar",
"cakupan": [
{"data": "foobar"}
],
"kata_asing": [
{"data": "barfoo"}
]
}
👆 dengan kata kunci data
yang sesuai. Ataupun, biar data cakupan menjadi senarai string dan berikan kebolehan memberikan senarai dict bagi yang memerlukannya seperti kata_asing
yang memerlukan maklumat tambahan seperti bahasanya.
{
"lemma": "foo",
"konsep": "bar",
"cakupan": [
"foobar"
],
"kata_asing": [
{
"data": "barfoo",
"bahasa": "en"
}
]
}
Barangkali boleh lihat pada kelas PeeweeGetterDict
untuk faham macam mana mahu manipulasikan benda ini.
Perlu ada pengesahan token untuk urusan melibatkan API supaya maklumat tidak sewenang-wenangnya ditukar oleh entah siapa-siapa. Boleh rujuk FastAPI bahagian 'security' untuk kaedahnya.
Berikut tangkapan layar ralat yang diperolehi ketika menjalankan pelayan:
Pangakalan data: MySQL
Langkah penghasilan semula ralat:
poetry run python ./samudra/serve.py
.Andaian saya, isu ini berkaitan dengan skema MySQL.
Langkah penyelesaian sementara yang dibuat dalam fail samudra/models/auth/pengguna.py
:
peranan
dalam kelas Keizinan
dari peranan = TextField(null=False, unique=True)
ke peranan = CharField(null=False, unique=True)
.peranan
dalam kelas Pengguna
dari peranan = ForeignKeyField(model=Keizinan, field=Keizinan.peranan, backref='pengguna', on_delete='set default', default=RoleEnum.DEFAULT.value)
ke peranan = ForeignKeyField(model=Keizinan, field=Keizinan.peranan, backref='pengguna', default=RoleEnum.DEFAULT.value)
.Jadual-jadual akan berjaya dibuat. Namun, timbul isu baru ketika mendaftar sebagai pengguna baru:
Langkah penghasilan semula ralat:
authentication/daftar
{
"nama": "[email protected]",
"katalaluan": "test123"
}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.