أنا جديد على القماش وأواجه صعوبة في تشغيله. لقد قمت بتثبيته عبر pip3 أولاً عندما حاولت تشغيله ، لم يتم العثور على الأمر "fab" ، لقد وجدته في النهاية في /home/me/.local/bin/fab2.
هل هذا هو المكان الصحيح؟
ثانيًا كلما قمت بتشغيله هكذا
/home/me/.local/bin/fab2 version
انا حصلت
(2, 3, 1)
2.3.1
No idea what 'version' is!
import fabric
if hasattr(fabric, '__version__'):
# For fabric2
print(fabric.__version_info__)
print(fabric.__version__) # for a version tuple
else:
# for fabric1
from fabric.api import *
print(env.version)
هل /home/me/.local/bin/fab2 هو الموقع الصحيح؟
ما هو "ليس لدي فكرة ما هو" الإصدار "!" لماذا تظهر؟
إنها تبحث عن وظيفة مهمة تسمى "نسخة" في ملف فابليزي ولا تعثر على واحدة. fab --version
يفعل ما تريده هناك.
$HOME/.local/bin/
هو المكان الذي يتم فيه تثبيت نقطة الدخول "نقاط الدخول" القابلة للتنفيذ عند pip install --user ...
- يمكنك إضافة $HOME/.local/bin
إلى PATH
(على سبيل المثال في ~/.bash_profile
أو ~/.bashrc
). إذا قمت بعمل sudo pip install Fabric
(بدون --user
) ، فستضع نقطة الدخول القابلة للتنفيذ في /usr/local/bin/
والتي من المحتمل أن تكون في PATH
بالفعل. أو يمكنك على الأرجح python -m fabric <fab args>
بدلاً من ذلك.
مرحبا شكرا لك النسيج - النسخة عملت بشكل رائع
لقد غيرت البرنامج النصي ليبدو هكذا
def hello():
print("Hello world!")
ما زلت أتلقى "ليس لدي أي فكرة عن" مرحبًا "!"
هل يوجد برنامج تعليمي للنسيج 2 أواجه صعوبة في الحصول على أي شيء يعمل فيه. لقد وجدت البرنامج التعليمي للنسيج 1.14 ولكن هذا ليس مفيدًا حقًا في الوقت الحالي حيث لا يعمل أي من الواردات. أفترض أن القماش 2 يتعامل معها بشكل مختلف.
إذا قمت بتشغيل fab أو fab2 ، أحصل على نفس الخطأ
لدي نسيج في / المنزل / أنا / النسيج
ajmcateer ، لدي هذه المشكلة أيضًا. تكمن المشكلة في أن طريقة مهمة النسيج الجديدة (كما تمت مناقشته هنا - http://docs.fabfile.org/en/1.14/usage/tasks.html) هي استخدام task decorator. مثال "Hello World" المكافئ هو:
from fabric import task
<strong i="8">@task</strong>
def hello(ctx):
print("Hello World")
يؤدي تشغيل "fab hello" إلى الحصول على الإخراج المتوقع.
لدي مصمم الديكور على حد سواء from fabric import task
بالإضافة إلى مصمم الديكور @task
.
ما زلت أتلقى خطأ "ليس لدي فكرة ..".
تفاصيل اضافية :
$ fab --version
Fabric 2.3.1
Paramiko 2.4.1
Invoke 1.1.1
$ python --version
Python 3.6.2
$ more tasks.py
#!/usr/bin/env python
from fabric import task
<strong i="10">@task</strong>
def build(c):
import pdb; pdb.set_trace()
print("Building!")
$ fab build -f tasks.py
No idea what 'build' is!
mandravaze ، يمكنني أن أؤكد أنها نجحت معي ، على الرغم من أن لدي مهمة في fabfile.py (أعتقد أن هذه هي المشكلة في محيطك) وأستخدم السطر التالي للاتصال
بناء القوات المسلحة البوروندية
تعتقد أن هذه هي المشكلة في محيطك
كيف يمكنني استكشاف الأخطاء وإصلاحها؟ ما هي البيانات الإضافية التي تريدها؟
ما هي الملفات التي لديك في هذا الموقع؟ أعتقد أن build () يجب أن يكون في fabfile.py ، إذا كان موجودًا ، فربما يلتقط fab ملفًا خاطئًا ...
mandarvaze في الأمر الخاص بك fab build -f tasks.py
هناك إرتباكات متعددة.
fab -f tasks.py build
-f
مخصصة لملف التكوين ، وليس لمجموعة المهام ، هذه هي العلامة -c
، مثل fab -c tasks build
(لا يوجد امتداد ".py"!)inv
(استدعاء) ، إذا كان الملف الذي يحتوي على المهام هو Task.py في الدليل الحالي ، فلن تحتاج إلى تحديده. بالنسبة إلى fab
(fabric) ، إذا كان الملف الذي يحتوي على المهام هو fabfile.py في الدليل الحالي ، فلن تحتاج إلى تحديده.ploxiln fab -c tasks build
يعمل. 👍
شكرا.
ajmcateer ، لدي هذه المشكلة أيضًا. تكمن المشكلة في أن طريقة مهمة النسيج الجديدة (كما تمت مناقشته هنا - http://docs.fabfile.org/en/1.14/usage/tasks.html) هي استخدام task decorator. مثال "Hello World" المكافئ هو:
from fabric import task <strong i="9">@task</strong> def hello(ctx): print("Hello World")
يؤدي تشغيل "fab hello" إلى الحصول على الإخراج المتوقع.
آسف لسؤال غبي ، لكن لماذا نحتاج إلى "ctx"؟ ما هذا؟
في النسيج 2 ، تحتاج إلى هذا ctx
لتشغيل الأوامر على النظام الصحيح ، على سبيل المثال ، ctx.run("hostname")
إذا كانت مشكلتك هي تلقي هذا الخطأ لوسيطة مهمة ، فقد يرجع السبب في ذلك إلى أنك لا تمرر الوسيطة بتنسيقها الصحيح ، ولكن بسبب الطريقة التي تم بها تسمية مهمتك.
fab mytask --task-name value
ليس
fab mytask --task_name value
أدرك أن هذا ليس موضعيًا للمسألة ، ولكن منذ أن انتهيت من هنا ، سأترك هذا لأي شخص آخر لديه نفس المشكلة.
في النسيج 2 ، تحتاج إلى هذا
ctx
لتشغيل الأوامر على النظام الصحيح ، على سبيل المثال ،ctx.run("hostname")
بادئ ذي بدء ، شكرا على المعلومات !!
لسوء الحظ ، يجب أن أقول إن Fabric 2 منفرد تمامًا. منطق 2.x غير بديهي للغاية ولا يبدو أن هناك الكثير من البرامج التعليمية الأساسية الجيدة حول كيفية استخدامه. على سبيل المثال ، ربما أفتقد شيئًا ما ، لكن انظر إلى منطق 1.x وجودة هذا البرنامج التعليمي 1.x: https://docs.fabfile.org/en/1.14/tutorial.html. ثم ابحث عن برنامج تعليمي مكافئ لـ 2.x ....
لا عجب أن هناك منفذًا غير رسمي لـ 1.x وهم - جريئون جدًا - يطلقون عليه 3.x
فقط لمعلوماتك العامة التي _لا _ من هذه التفاصيل حول الحاجة إلى مصمم الديكور @task
، والحاجة إلى تمرير كائن سياق وما إلى ذلك ، موجودة في قسم "نظرة عامة وبرنامج تعليمي" من التوثيق العام لـ Fabric: https: // docs .fabfile.org / en / 1.8 / tutorial.html
كنت مستخدمًا كثيفًا لـ Fabric 1 وافترضت بسذاجة أن هذه الإرشادات كانت تعلمني دلالات جديدة لـ Fabric 2 قبل أن أجد بطاقة الإصدار هذه. قد لا يشجع ذلك حقًا على التبني لأن المستندات مضللة بشكل أساسي للأشخاص على متن الطائرة.
لست متأكدًا من كيفية وصولك إلى تلك الصفحة ، يجب أن تبحث في https://docs.fabfile.org/en/2.5/getting-started.html
شكرا على ذلك! ربما سيساعد المسافرين في المستقبل على إلقاء عنوان "مهمل" سمين على مستندات السلسلة الأولى. أنا متأكد تمامًا من أنني قمت بالانتقال إلى هذا إما من إحدى نتائج google المهمة أو من مستندات موقع الويب النسيجية الرسمية ، وفي كلتا الحالتين أعتقد أنه بينما لا يكون الأمر الأول شيئًا يمكن لفريق Fabric التحكم فيه ، أظن أن العديد من المتبنين المحتملين يتكبدون هذا الإحباط وقد يستفيد من التنبيه إلى الحاجة إلى العثور على المستندات المحدثة (تتبع مستندات Python الرسمية المستضافة نمطًا مشابهًا iirc).
قد لا يشجع ذلك حقًا على التبني لأن المستندات مضللة بشكل أساسي للأشخاص على متن الطائرة.
مستخدم جديد لـ Fabric. لقد بحثت في Google على "Fabric Python" ، ثم نقرت على الرابط الذي يشير إلى "Overview and Tutorial". نعم ، لقد وجدت هذا محيرًا حقًا وأنا مندهش جدًا لأنني تمكنت من السير في الاتجاه الخطأ في وقت مبكر من هذه العملية.
أظن أن العديد من المتبنين المحتملين يعانون من هذا الإحباط وقد يستفيدون من تنبيههم بالحاجة إلى العثور على المستندات المحدثة (تتبع مستندات Python الرسمية المستضافة نمطًا مشابهًا iirc).
نعم.
لاحظ أيضًا أن هذه هي صفحة النتائج:
يمكن تكوين هذه الروابط ذات المسافة البادئة إذا كنت تتحكم في المجال. ربما يكون من الممكن مسح 1.x من نتائج البحث فوق إضافة عنوان "مهمل" عليها.
لقد عثرت للتو على هذا الأمر وتمكنت أخيرًا من إصلاحه. لا شيء خطأ في القماش.
هذا ما فعلته.
╰─$ fab --version
Fabric 2.5.0
Paramiko 2.7.2
Invoke 1.4.1
في fabfile.py
:
from fabric.tasks import task
<strong i="11">@task</strong>
def test(ctx, title):
print("ctx:", ctx)
print("title:", title)
إذا قمت للتو بتشغيل المهمة:
╰─$ fab test
'test' did not receive required positional arguments: 'title'
هذا يعني أنه يتوقع title
كوسيطة.
لذلك ، مرر الوسيطة:
fab test title="hello world"
انتاج:
ctx: <your current context. Don't worry about it>
title: title=hello world
لكن اعلم أن الوسيطة التي تم تمريرها ستكون عبارة عن سلسلة. تأكد من التقسيم بـ =
.
فمثلا:
<strong i="28">@task</strong>
def test(ctx, title):
print("ctx:", ctx)
print("title type:", type(title))
print("title:", title)
print("title value:", title.split("=")[1])
يركض:
fab test title="hello world"
انتاج:
ctx: ...
title type: <class 'str'>
title: title=hello world
title value: hello world
التعليق الأكثر فائدة
ajmcateer ، لدي هذه المشكلة أيضًا. تكمن المشكلة في أن طريقة مهمة النسيج الجديدة (كما تمت مناقشته هنا - http://docs.fabfile.org/en/1.14/usage/tasks.html) هي استخدام task decorator. مثال "Hello World" المكافئ هو:
يؤدي تشغيل "fab hello" إلى الحصول على الإخراج المتوقع.